删除java中字母数字字符串中的前导零

时间:2017-05-30 13:53:17

标签: java

我的要求是:

000000030899039 --> 30899039,
0-200IT-700 --> 0-200IT-700,
01-200IT-600 --> 1-200IT-600,
000-200IT-700 --> 0-200IT-700

有办法吗?零之前" - "不应该删除/剥离。

4 个答案:

答案 0 :(得分:2)

我建议以下(未经测试):

String str = "...";
int i;
for(i = 0; str.charAt(i) == '0'; i++) {}
str = str.substring(str.charAt(i) == '-' ? i - 1 : i);

答案 1 :(得分:1)

您可以使用正则表达式:

public static void main(String[] args) {

//      String numbersWithZeros = "00000003089903";
//      String numbersWithZeros = "000-200IT-700";
//      String numbersWithZeros = "01-200IT-600";
        String numbersWithZeros = "000-200IT-700";
        String numbersWithoutZeros = numbersWithZeros.replaceAll("^0*(0-)|^0*", "$1");

        System.out.println(numbersWithoutZeros);
    }

输出:

30899039
0-200IT-700
...

答案 2 :(得分:1)

您可以使用以下正则表达式: ^0+(?!-) 这匹配字符串开头的1个或多个0。如果零后跟破折号,则不计算。

由于000-xxxx中的最后一个零后跟一个破折号,因此保留了它。 您可以使用http://www.regexplanet.com/advanced/java/index.html

等测试正则表达式

答案 3 :(得分:0)

==