Wandelt die Zeichenspalte, die die Dauer darstellt, in eine Zahl umIch habe eine Charakterspalte, in der der Eingabewert Duration (wie: 4d 15h 5m, 2d 32m, 23h 52m, 18m) darstellt, und ich möchte es in ein numerisches Format konvertieren: day: hr: m
Re: Konvertiert die Zeichenspalte, die die Dauer darstellt, in eine numerischeEin anderer Weg, nicht eleganter, aber mit mehr Kontrolle über die Eingabe:
//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: Konvertiert die Zeichenspalte, die die Dauer darstellt, in eine numerischeEs gibt vielleicht einen eleganteren Weg, dies zu tun, aber ich konnte die unten stehende Formel zum Laufen bringen (auch in der beigefügten Tabelle). Es teilt Ihre Charakterspalte mit einem Leerzeichen in eine Liste auf. Für jedes dieser Elemente wird der Variablen, die am Ende zurückgegeben wird, die entsprechende Zeit basierend auf dem letzten Zeichen hinzugefügt.
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;