字符串,在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
字符串,在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
這個正則表達式可以做你所需要的,據我所知。
string pattern = "^[ 0]*|(|(?<!\d)0)*$";
str.replaceAll(pattern, "");
爲了解釋:表達式爲兩個部分,由第一|
分隔。第一部分^[ 0]*
只是在行/字符串的開始處尋找0或更多空格或零(^
表示行/字符串的開頭)。
第二部分(|(?<!\d)0)*$
稍微複雜一點,因爲特殊情況下一行中的最後一個非零數字以數字零結束。該部分尋找零個或更多的空間或(?<!\d)0
,這意味着零不會在數字前。 ?<!\d
部分稱爲negative lookbehind。最後是$
,表示行結束/字符串。
['/^[0\s]*|[0\s]*$/'](https://regex101.com/r/aS2yQ3/1) – Sam
你是如何正確使用代碼的?它似乎沒有工作。對不起,我仍然是一個新手在Java –
這一點有點作品。 'str.replaceAll(「^ [0 \\ s] * [0 \ s] * $」,「」)'但是最後一種情況,其中'0 10 9 0 0 20 0'變成'10 9 0 0 2'而不是'10 9 0 0 20' –