2012-08-28 42 views
0

我有一個輸入值「+000011111.11」,我基本上想要刪除+和前導零。目前,該辦法正在解決這一問題是:RegEX模式 - 兩步過程

inputString="+0000111111.11" 
StringBuffer bufOutputString = new StringBuffer(inputString); 
StringBuffer bufNewOutputString = new StringBuffer(); 

for (int i = 0; i < inputString.length(); i++) { 
    if (Character.isDigit(bufOutputString.charAt(i)) || bufOutputString.charAt(i)=='.') { 
     bufNewOutputString.append(bufOutputString.charAt(i)); 
    } 
} 
inputString=bufNewOutputString.toString(); 
String s = inputString.replaceFirst ("^0*", ""); 
System.out.println("The Super converted value is"+s); 

使用for循環,消除所以基本上我的「+」,然後我用正則表達式,以確保前導零個的都走了。

有沒有更好的方法來處理這個字符串的解析?感謝您的輸入。

+0

,請不要使用StringBuffer的,如果你可以使用StringBuilder。幾乎沒有任何理由起訴StringBuffer。 –

+0

@PeterLawrey同意,謝謝。 –

回答

3

您可以使用:

String s = Double.valueOf("+000011111.11").toString(); 
+0

不知道雙可以做到這一點。謝謝。 –

+1

如果輸入是「+000011111111.11」,您將返回「1.111111111E7」,而不是「11111111.11」。如果輸入足夠大,你會得到「Infinity」。如果這樣的事情是一個問題,JohnB的正則表達式更好。 – TimK

7

當然

String s = inputString.replaceFirst ("^\\+?0*", ""); 

取代零或一個加號,以及零個或多個零,由空字符串。所以你可能可以用這行代替你的所有代碼。或者我錯過了什麼?

+0

謝謝,正是我需要的。但@dtmilano提供的答案非常簡單。 –

+0

+1即使這個答案是在相同的簡單程度,我相信:) – anubhava