我正在寻找一个正则表达式将String替换为以下(数字)格式:
输入示例:
00000
00440
235
+3484
-0004
-00
+0
需要的结果:
0
440
235
3484
-4
0
0
我尝试修改以下内容...只留下至少+和 - 并删除零,但我只是在圈子中运行。有人能帮助我吗?
input.replaceAll("^(\\+?|-?)0+(?!)", "");
PS:它是可选的,+ 0 / -0显示为0,但是会加号。
答案 0 :(得分:5)
您可以使用:
String repl = input.replaceAll("^(?:(-)|\\+)?0*(?!$)", "$1");
RegEx分手:
^ # 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");
答案 1 :(得分: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。