2013-10-24 35 views
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; 
    } 

我知道这是相当?烦人和相当长 我能做到的要求以更简单的方式

回答

2

一个务实的方式进行更换单元令牌:

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

输出:

3 Days 7 Hours 40 Minutes 20 Seconds 
1

您可以使用子(),而不指数(),即:

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

但我敢肯定有人会拿出一个fency正则表达式的解决方案。 ;-)

相关问题