期間を表す文字列を数値に変換する入力値がDurationを表すCharacter Columnがあり(4d 15h 5m、2d 32m、23h 52m、18mなど)、数値形式に変換したいです。
再:期間を表す文字列を数値に変換するもう1つの方法は、より柔軟ではなく、入力をより細かく制御することです。
//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] ) ) )
再:期間を表す文字列を数値に変換するこれを行うにはもっと洗練された方法があるかもしれませんが、私は以下の公式を動作させることができました(添付の表も)。スペース区切り文字を使用して文字列をリストに分割します。それらの項目のそれぞれについて、最後の文字に基づく適切な時間を、最後に返される変数に追加します。
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;