我想截取这个字符串。
"0000819780"
如何获取只有 "819780" 部分。
我可以用我的方法做到这一点,只是好奇是否有更 "优雅" 或 "正确" 的方法来实现这个目标。
替代方法:
使用Apache Commons StringUtils 类:
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
中删除前导零; 其中一种方法是从左到右迭代String
,在遇到非零字符时停止(这样就不会删除最后一个数字),并调用String.substring(int)
,如下所示:
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+(?!$)", "")
String a = "0000819780";
System.out.println(Long.parseLong(a));
请查看https://ideone.com/7NMxbE以获取运行代码。
如果它可以具有除数字以外的值,您需要捕获NumberFormatException
。
Long
。并非所有十位数的整数都适合于 Integer
。 - Thilowhile(str.length() >= 1 && str.charAt(0) == '0')
str = str.substring(1);
819780
这个部分做什么? - Elliott Frisch