【问题标题】:Converting leading 0 String into Integer in java在java中将前导0字符串转换为整数
【发布时间】:2012-03-20 22:01:42
【问题描述】:

我的 java 类中有以下字符串

String str="0000000000008";

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

为此,我尝试将此字符串str 转换为整数

Integer i=Integer.parseFloat(str)+1;

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

如何增加字符串值,以便保留前导 0,并且系列将继续?

【问题讨论】:

    标签: java string casting increment number-formatting


    【解决方案1】:

    实用的解决方案——使用String.format

    str = String.format("%013d", Long.parseLong(str)+1);
    

    【讨论】:

    • (没数数字;)只有 13 位,不是 17 位)
    • 您也可以使用str = String.format("%0" + str.length() + "d", Long.parseLong(str)+1); 来保留原始字符串中的位数。
    【解决方案2】:

    您走在正确的道路上。先解析为Long:

    long cur = Long.parseLong("0000000000008");
    

    增量并格式化回String,前导0s:

    new java.text.DecimalFormat("0000000000000").format(cur + 1);
    

    或者:

    String.format("%013d", Long.valueOf(cur));
    

    【讨论】:

    • ..感谢您的回答。但是 String str 不是一个常数。它可以在运行时更改。那么,有没有其他解决方案呢?
    • @ArunKumar:那么,有什么问题:Long.parseLong(knownAtRuntime) 其中knownAtRuntimeString 变量?
    • @ Tomasz Nurkiewicz -- 你是对的。您的答案将保持不变。但我担心的是,这不适用于在程序执行期间其值可能会更改的 String 变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多