1

「3D7H40M20S」という値の文字列があり、3 日 7 時間 40 分 20 秒として変換する必要があります。

        BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
    AttributeBinding attr = (AttributeBinding)bindings.getControlBinding("ScreeningSLAWaitTimeDuration");
    scrSlaWaitDur = (String)attr.getInputValue();
    System.out.println("-------------------------------------------SCREENING SLA WAIT DURATION---------------"+scrSlaWaitDur);
    scrSlaWaitDur = scrSlaWaitDur.substring(2, scrSlaWaitDur.length());
    System.out.println("--------------------------------------------SUBSTRING--------------------"+scrSlaWaitDur);
    int dIndex = scrSlaWaitDur.indexOf("D");
    System.out.println("*******************************************INDEX OF D**********************************"+dIndex);
    if(dIndex != -1){
        String newDur = scrSlaWaitDur.substring(0, dIndex)+" days "+scrSlaWaitDur.substring(dIndex+1);
        int mIndex = scrSlaWaitDur.lastIndexOf("M");
        String newDur2 = scrSlaWaitDur.substring(0, mIndex)+" minute "+scrSlaWaitDur.substring(mIndex+1);
        int sIndex = newDur2.lastIndexOf("S");
        String newDur3 = newDur2.substring(0,sIndex)+" second";
        scrSlaWaitDur = newDur3;
        return scrSlaWaitDur;
    }

私はこれが非常に面倒で非常に長いことを知っています. より簡単な方法で要件を達成できますか?

4

2 に答える 2

2

実用的なアプローチは、ユニット トークンを置き換えることです。

return scrSlaWaitDur.replace("D", " Days ").replace("H", " Hours ").replace("M", " Minutes ").replace("S", " Seconds");

出力:

3 Days 7 Hours 40 Minutes 20 Seconds
于 2013-10-24T16:02:33.653 に答える
1

index() なしで substring() を使用できます。つまり、次のようになります。

String result = 
scrSlaWaitDur.replace("D"," Days ").replace("H"," Hours ").replace("M"," Minutes ").replace("S"," Seconds");

しかし、誰かがfency regexソリューションを思い付くと確信しています。;-)

于 2013-10-24T16:03:41.870 に答える