在java中将前导0字符串转换为整数

Aru*_*mar 1 java string casting increment number-formatting

我的java类中有以下字符串

String str="0000000000008";
Run Code Online (Sandbox Code Playgroud)

现在我想增加它,以便下一个值应该是0000000000009

为此,我尝试将此String str转换为Integer

Integer i=Integer.parseFloat(str)+1;
Run Code Online (Sandbox Code Playgroud)

当我打印i它的值时,它只打印17(因为它在转换时从字符串中删除了前导0).

如何增加String值,以便保留前导0,系列将继续?

And*_*s_D 7

实用解决方案 - 使用String.format:

str = String.format("%013d", Long.parseLong(str)+1);
Run Code Online (Sandbox Code Playgroud)

  • 你也可以做`str = String.format("%0"+ str.length()+"d",Long.parseLong(str)+1);`来保持原始字符串中的位数. (2认同)

Tom*_*icz 5

你走在正确的道路上.首先解析为Long:

long cur = Long.parseLong("0000000000008");
Run Code Online (Sandbox Code Playgroud)

增加并格式化回String领先0s:

new java.text.DecimalFormat("0000000000000").format(cur + 1);
Run Code Online (Sandbox Code Playgroud)

或者:

String.format("%013d", Long.valueOf(cur));
Run Code Online (Sandbox Code Playgroud)