在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匹配。如果零后面跟一个破折号,它就不算了
由于xxxx000
中的最后一个零后面跟一个破折号,因此保留该破折号。
您可以在类似的地方测试正则表达式,我建议如下(未测试):
你试了什么?字母数字是字母和数字字符的组合。但您的示例似乎包含
-
字符。你需要澄清你想做什么。那么您的字符串是否只包含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('-'))));
}