Java - 正则表达式替换前导零,但不是全部并且保持减去

时间:2016-12-22 18:12:45

标签: java regex numbers

我正在寻找一个正则表达式将String替换为以下(数字)格式:

输入示例:

00000
00440
  235
+3484
-0004
  -00
   +0

需要的结果:

    0
  440
  235
 3484
   -4
    0
    0

我尝试修改以下内容...只留下至少+和 - 并删除零,但我只是在圈子中运行。有人能帮助我吗?

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

PS:它是可选的,+ 0 / -0显示为0,但是会加号。

2 个答案:

答案 0 :(得分:5)

您可以使用:

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

RegEx Demo

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");

RegEx Demo 2

答案 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。