Convertir la columna de caracteres que representa la duración a numéricaTengo una columna de caracteres donde el valor de entrada representa la duración (como: 4d 15h 5m, 2d 32m, 23h 52m, 18m), y me gustaría convertirlo a un formato numérico: día: hr: m
Re: Convertir la columna de caracteres que representa la duración a numéricaOtra forma, no más elegante, pero con más control sobre la entrada:
//Parse Duration String
match = Regex Match(
:Character Duration,
"(([\d\.]+)d)? ?(([\d\.]+)h)? ?(([\d\.]+)m)?"
);
//Add up duration
If( Is Missing( match[3] ), 0, In Days( Num( match[3] ) ) ) +
If( Is Missing( match[5] ), 0, In Hours( Num( match[5] ) ) ) +
If( Is Missing( match[7] ), 0, In Minutes( Num( match[7] ) ) )
Re: Convertir la columna de caracteres que representa la duración a numéricaPuede haber una forma más elegante de hacer esto, pero pude hacer funcionar la siguiente fórmula (también en la tabla adjunta). Divide la columna de tu personaje usando un delimitador de espacio en una lista. Para cada uno de esos elementos, agrega la cantidad de tiempo adecuada en función del último carácter de una variable que se devuelve al final.
durs = Words( :CharacterDuration, " " );
val = 0;
For( i = 1, i <= N Items( durs ), i++,
number = Num( Substr( durs[i], 1, Length( durs[i] ) - 1 ) );
If(
Ends With( durs[i], "d" ), val += In Days( number ),
Ends With( durs[i], "h" ), val += In Hours( number ),
Ends With( durs[i], "m" ), val += In Minutes( number )
);
);
val;