我正在阅读,但找不到相当的片段。我正在寻找一个函数,它接受一个字符串并左键填充零(0),直到整个字符串长度为8位。我找到的所有其他片段只允许整数控制填充多少,而不是填充多少,直到整个字符串为x位长。在java。
实施例
等等,谢谢。BC238 => 000BC289
4 => 00000004
答案 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 StringUtils
或String.format(...)
的方法。如果您使用库方法,则代码的意图更清晰,假设它具有合理的名称。
答案 3 :(得分:1)
懒惰的方法是使用类似:Right(“00000000”+ yourstring,8)和Right函数的简单实现:http://geekswithblogs.net/congsuco/archive/2005/07/07/45607.aspx