在java中填充数字直到字符串为8个字符?

时间:2011-03-27 02:39:01

标签: java string hex padding

我正在阅读,但找不到相当的片段。我正在寻找一个函数,它接受一个字符串并左键填充零(0),直到整个字符串长度为8位。我找到的所有其他片段只允许整数控制填充多少,而不是填充多少,直到整个字符串为x位长。在java。

实施例

  

BC238 => 000BC289
  4 => 00000004

等等,谢谢。

4 个答案:

答案 0 :(得分:16)

如果你开始使用的字符串是< = 8个字符长,你可以这样做:

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

实际上,这也有效:

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

如果您不确定s最多8个字符,则需要在使用上述任一项之前对其进行测试(或使用Math.min(8, s.length())或准备好捕捉{{1} }})。

如果您从一个整数开始并希望将其转换为带填充的十六进制,则可以执行以下操作:

IndexOutOfBoundsException

答案 1 :(得分:5)

org.apache.commons.lang.StringUtils.leftPad(String str, int size, char padChar)

您可以查看here

答案 2 :(得分:2)

这个怎么样:

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

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

我更喜欢使用现有的库方法,例如来自Apache Commons StringUtilsString.format(...)的方法。如果您使用库方法,则代码的意图更清晰,假设它具有合理的名称。

答案 3 :(得分:1)

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