【问题标题】:Pad digits until string is 8 chars long in java?在java中填充数字直到字符串长8个字符?
【发布时间】:2011-07-23 17:50:09
【问题描述】:

我正在阅读,但找不到完整的 sn-p。我正在寻找一个函数,它接收一个字符串并左填充零 (0),直到整个字符串为 8 位长。我发现的所有其他 sn-ps 只让整数控制填充多少而不是填充多少,直到整个字符串长 x 位。在java中。

例子

BC238 => 000BC289
4 => 00000004

等谢谢。

【问题讨论】:

标签: java string hex padding


【解决方案1】:

如果您从一个已知长度为

s = "00000000".substring(0, 8 - s.length()) + s;

其实也可以这样:

s = "00000000".substring(s.length()) + s;

如果您不确定s 的长度最多为 8 个字符,则需要在使用上述任一方法之前对其进行测试(或使用Math.min(8, s.length()) 或准备捕获IndexOutOfBoundsException)。

如果您从整数开始并希望将其转换为带填充的十六进制,您可以这样做:

String s = String.format("%08x", Integer.valueOf(val));

【讨论】:

    【解决方案2】:

    懒惰的方法是使用类似:Right("00000000" + yourstring, 8) 的 Right 函数的简单实现:http://geekswithblogs.net/congsuco/archive/2005/07/07/45607.aspx

    【讨论】:

      【解决方案3】:
      org.apache.commons.lang.StringUtils.leftPad(String str, int size, char padChar)
      

      你可以看看here

      【讨论】:

        【解决方案4】:

        这个怎么样:

        s = (s.length()) < 8 ? ("00000000".substring(s.length()) + s) : s;
        

        s = "00000000".substring(Math.min(8, s.length())) + s;
        

        不过,我更喜欢使用现有的库方法,例如来自 Apache Commons StringUtilsString.format(...) 的方法。如果你使用库方法,你的代码的意图会更清楚,假设它有一个合理的名字。

        【讨论】:

        • 我喜欢这个;子字符串计算比我的解决方案更简单。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-01
        • 1970-01-01
        • 2010-09-28
        • 2021-01-31
        相关资源
        最近更新 更多