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

在java中删除字母数字字符串中的前导零,java,Java,我的要求是: 000000030899039 --> 30899039, 0-200IT-700 --> 0-200IT-700, 01-200IT-600 --> 1-200IT-600, 000-200IT-700 --> 0-200IT-700 有办法吗?不应删除/删除“-”之前的零。您可以使用正则表达式: public static void main(String[] args) { // String numbersWithZeros = "00

我的要求是:

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

有办法吗?不应删除/删除“-”之前的零。

您可以使用正则表达式:

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
...

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

由于xxxx
000
中的最后一个零后面跟一个破折号,因此保留该破折号。
您可以在类似

的地方测试正则表达式,我建议如下(未测试):


你试了什么?字母数字是字母和数字字符的组合。但您的示例似乎包含
-
字符。你需要澄清你想做什么。那么您的字符串是否只包含
a
z
a
z
0
9
,以及
-
?如果要删除前导的
0
s,不包括前面有
-
0
?字符串包含所有组合。我必须修剪所有前导零,除了一个零后跟连字符。工作不正常<代码>0~0—200—700—>0~200 IT-700 < /代码>结果<代码> -200 IT-700–> 0 200 IT-700 < /代码>此处,其全部关于正则表达式,您应该考虑看得更深,它非常有用;没有括号,分号结束循环。你也可以说“for(…){}”
String str = "...";
int i;
for(i = 0; str.charAt(i) == '0'; i++) {}
str = str.substring(str.charAt(i) == '-' ? i - 1 : i);
public static void main(String[] args) {
    String str1 = "000000030899039";     // --> 30899039,
    String str2 = "0-200IT-700";         //--> 0-200IT-700,
    String str3 = "01-200IT-600";        //--> 1-200IT-600,
    String str4 = "000-200IT-700";       //--> 0-200IT-700
    System.out.println(Integer.parseInt(str1.split("-")[0])+ (str1.indexOf('-')== -1 ?"":str1.substring(str1.indexOf('-'))));
    System.out.println(Integer.parseInt(str2.split("-")[0])+ (str2.indexOf('-')== -1 ?"":str2.substring(str2.indexOf('-'))));
    System.out.println(Integer.parseInt(str3.split("-")[0])+ (str3.indexOf('-')== -1 ?"":str3.substring(str3.indexOf('-'))));
    System.out.println(Integer.parseInt(str4.split("-")[0])+ (str4.indexOf('-')== -1 ?"":str4.substring(str4.indexOf('-'))));
}