2016-12-22 53 views
2

我正在尋找一個正則表達式替換字符串以下(數字)格式:爪哇 - 正則表達式替換前導零,但不是所有的,並保持減

輸入例子:

00000 
00440 
    235 
+3484 
-0004 
    -00 
    +0 

結果需要:

0 
    440 
    235 
3484 
    -4 
    0 
    0 

我試圖修改以下...只留至少+和 - 並刪除零,但我只是在圈子中運行。有人能幫助我嗎?

input.replaceAll("^(\\+?|-?)0+(?!)", ""); 

PS:這是可選的,+ 0/-0顯示爲0,但會是一個加號。

+4

你有什麼打算用做代碼,似乎你可以在大多數情況下使用'Ìnteger.parseInt()',如果不是所有的情況下 – zython

+1

你是絕對正確的。我非常喜歡,我沒有看到它。謝謝!相反,我必須使用'BigInteger',因爲我可能比'long'更長。我只需在將字符串放入'BigInteger'之前刪除+ – Javatar

回答

4

您可以使用:

String repl = input.replaceAll("^(?:(-)|\\+)?0*(?!$)", "$1"); 

RegEx Demo

正則表達式破碎:

^  # line start 
(?:  # start non-capturing group 
    (-) # match - and group it in captured group #1 
    | # OR 
    \\+ # match literal + 
)?  # end of optional group 
0*  # match 0 or more zeroes 
(?!$) # negative lookahead to assert we are not at end of line 

或者,你可以用略性能更好的正則表達式:

String repl = input.replaceAll("^(?:0+|[+]0*|(-)0*)(?!$)", "$1"); 

RegEx Demo 2

0

試試這個:

length = input.length(); 
for(int i = 0; i<length; i++) { 
    if(input.charAt(0) == '0' || input.charAt(0) == '+') { 
     if(input.length() == 1) { 
      continue; 
     } 
     input = input.substring(i+1); 
     length -= 1; 
     i -= 1; 
    } 
} 

input將不0和+,但0仍然會保持爲0。

相關問題