기간을 나타내는 문자 열을 숫자로 변환나는 입력 값이 지속 시간 (예 : 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;