如下所示的整数字符串,在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
答案 0 :(得分:3)
就我所见,这个正则表达式可以满足您的需求。
string pattern = "^[ 0]*|( |(?<!\d)0)*$";
str.replaceAll(pattern, "");
解释:表达式分为两部分,由第一部分|
分隔。第一部分^[ 0]*
只是在行/字符串的开头查找0或更多空格或零(^
表示行/字符串的开头)。
第二部分( |(?<!\d)0)*$
稍微复杂一些,因为一个特殊情况下,一行中的最后一个非零数字以数字零结尾。此部分查找空间或(?<!\d)0
的零个或多个出现,这意味着零之前没有数字。 ?<!\d
部分称为negative lookbehind。最后是$
,表示行尾/字符串。