从字符串中的数字中删除前导零
Remove leading zeros from a number in a string
我想要trim这个字符串。
“0000819780”
我怎样才能得到“819780”部分。
我可以用我的方式做到,只是好奇是否有任何 "elegant" 或 "right" 方法来做到这一点。
while(str.length() >= 1 && str.charAt(0) == '0')
str = str.substring(1);
选择:
使用 Apache Commons StringUtils class:
StringUtils.stripStart(String str, String stripChars);
以你的例子为例:
StringUtils.stripStart("0000819780", "0"); //should return "819780"
我希望这有效:
try {
int i = Integer.parseInt(yourString);
System.out.println(i);
} catch(NumberFormatException e) {
// the string is not a number
}
如果输入始终是数字,而您只想删除开头的零,只需将其解析为整数即可。如果您想要它的字符串格式,请将其解析回来。
String a = "0000819780";
System.out.println(Long.parseLong(a));
检查 https://ideone.com/7NMxbE 以获得 运行 代码。
如果它可以有数字以外的值,你需要捕捉 NumberFormatException
您可以通过多种方式从 String
中删除前导零;一种方法,从左到右迭代 String
在最后一个字符的下一个停止(这样你就不会擦除最后一个数字)如果遇到非零并调用 String.substring(int)
like
String str = "0000819780";
for (int i = 0, length = str.length() - 1; i < length; i++) {
if (str.charAt(i) != '0') {
str = str.substring(i);
break;
}
}
System.out.println(str);
或者,像
这样解析String
int v = Integer.parseInt(str);
System.out.println(v);
一个优雅纯粹的java方式就是"0000819780".replaceFirst("^0+(?!$)", "")
双 abc = Double.parseDouble("00346632");
字符串 xyz = String.format("%.0f", abc);
我想要trim这个字符串。
“0000819780”
我怎样才能得到“819780”部分。
我可以用我的方式做到,只是好奇是否有任何 "elegant" 或 "right" 方法来做到这一点。
while(str.length() >= 1 && str.charAt(0) == '0')
str = str.substring(1);
选择:
使用 Apache Commons StringUtils class:
StringUtils.stripStart(String str, String stripChars);
以你的例子为例:
StringUtils.stripStart("0000819780", "0"); //should return "819780"
我希望这有效:
try {
int i = Integer.parseInt(yourString);
System.out.println(i);
} catch(NumberFormatException e) {
// the string is not a number
}
如果输入始终是数字,而您只想删除开头的零,只需将其解析为整数即可。如果您想要它的字符串格式,请将其解析回来。
String a = "0000819780";
System.out.println(Long.parseLong(a));
检查 https://ideone.com/7NMxbE 以获得 运行 代码。
如果它可以有数字以外的值,你需要捕捉 NumberFormatException
您可以通过多种方式从 String
中删除前导零;一种方法,从左到右迭代 String
在最后一个字符的下一个停止(这样你就不会擦除最后一个数字)如果遇到非零并调用 String.substring(int)
like
String str = "0000819780";
for (int i = 0, length = str.length() - 1; i < length; i++) {
if (str.charAt(i) != '0') {
str = str.substring(i);
break;
}
}
System.out.println(str);
或者,像
这样解析String
int v = Integer.parseInt(str);
System.out.println(v);
一个优雅纯粹的java方式就是"0000819780".replaceFirst("^0+(?!$)", "")
双 abc = Double.parseDouble("00346632");
字符串 xyz = String.format("%.0f", abc);