2016-07-14 50 views
2

字符串,在Java我怎麼捨去開頭和結尾零並使它看起來像:Java的正則表達式來去除前導和尾隨零與空間的整數,如下面的

  • 0 0 1 2 3成爲1 2 3
  • 0 -2 4 0 0 0成爲-2 4
  • 0 3 0 -4 0 0成爲3 0 -4
  • 0 10 9 0 0 20 0成爲10 9 0 0 20
+4

['/^[0\s]*|[0\s]*$/'](https://regex101.com/r/aS2yQ3/1) – Sam

+0

你是如何正確使用代碼的?它似乎沒有工作。對不起,我仍然是一個新手在Java –

+0

這一點有點作品。 'str.replaceAll(「^ [0 \\ s] * [0 \ s] * $」,「」)'但是最後一種情況,其中'0 10 9 0 0 20 0'變成'10 9 0 0 2'而不是'10 9 0 0 20' –

回答

3

這個正則表達式可以做你所需要的,據我所知。

string pattern = "^[ 0]*|(|(?<!\d)0)*$"; 
str.replaceAll(pattern, ""); 

爲了解釋:表達式爲兩個部分,由第一|分隔。第一部分^[ 0]*只是在行/字符串的開始處尋找0或更多空格或零(^表示行/字符串的開頭)。

第二部分(|(?<!\d)0)*$稍微複雜一點,因爲特殊情況下一行中的最後一個非零數字以數字零結束。該部分尋找零個或更多的空間或(?<!\d)0,這意味着零不會在數字前?<!\d部分稱爲negative lookbehind。最後是$,表示行結束/字符串。

+0

謝謝,這個作品。如果你不介意,你可以更多地解釋你寫的模式 –

+1

@ChristianSakai對不起,現在補充說明:) –

+1

好消息是我錯過了我的快速評論。 – Sam

相關問題