將表示持續時間的字符列轉換為數字我有一個字符列,其中輸入值表示持續時間(如:4d 15h 5m,2d 32m,23h 52m,18m),我想將其轉換為數字格式:day:hr:m
Re:將表示持續時間的字符列轉換為數字另一種方式,不是更優雅,而是更多地控制輸入:
//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:將表示持續時間的字符列轉換為數字可能有更優雅的方法來做到這一點,但我能夠得到以下公式(也在附表中)。它使用空格分隔符將您的字符列拆分為列表。對於每個項目,它會根據最後一個字符將適當的時間量添加到最後返回的變量中。
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;