从字符串中的数字中删除前导零

时间:2016-04-06 03:12:21

标签: java string trim

我想修剪这个字符串。

“0000819780”

我如何才能获得“819780”部分。

我可以用我的方式做到这一点,只是好奇有没有“优雅”或“正确”的方式来做到这一点。

7 个答案:

答案 0 :(得分:5)

替代:

使用Apache Commons StringUtils class:

StringUtils.stripStart(String str, String stripChars);

对于你的例子:

StringUtils.stripStart("0000819780", "0");  //should return "819780" 

答案 1 :(得分:5)

我希望这有效:

try {
   int i = Integer.parseInt(yourString);
   System.out.println(i);
} catch(NumberFormatException e) {
   // the string is not a number
}

答案 2 :(得分:4)

您可以通过多种方式从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);

答案 3 :(得分:4)

优雅的纯java方式只是"0000819780".replaceFirst("^0+(?!$)", "")

答案 4 :(得分:2)

如果输入始终是一个数字,并且您只想删除起始零,则只需将其解析为整数。如果你想要它以字符串格式,请将其解析回来。

String a = "0000819780";
System.out.println(Long.parseLong(a));

检查https://ideone.com/7NMxbE是否有正在运行的代码。

如果它可以包含数字以外的值,则需要捕获NumberFormatException

答案 5 :(得分:1)

while(str.length() >= 1 && str.charAt(0) == '0')
   str = str.substring(1);

答案 6 :(得分:1)

Double abc = Double.parseDouble(&#34; 00346632&#34;);

String xyz = String.format(&#34;%。0f&#34;,abc);