【发布时间】:2011-07-23 17:50:09
【问题描述】:
我正在阅读,但找不到完整的 sn-p。我正在寻找一个函数,它接收一个字符串并左填充零 (0),直到整个字符串为 8 位长。我发现的所有其他 sn-ps 只让整数控制填充多少而不是填充多少,直到整个字符串长 x 位。在java中。
例子
BC238 => 000BC289
4 => 00000004
等谢谢。
【问题讨论】:
-
使一段十六进制成为有效的 8 字符长的十六进制代码。
我正在阅读,但找不到完整的 sn-p。我正在寻找一个函数,它接收一个字符串并左填充零 (0),直到整个字符串为 8 位长。我发现的所有其他 sn-ps 只让整数控制填充多少而不是填充多少,直到整个字符串长 x 位。在java中。
例子
BC238 => 000BC289
4 => 00000004
等谢谢。
【问题讨论】:
如果您从一个已知长度为
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));
【讨论】:
懒惰的方法是使用类似:Right("00000000" + yourstring, 8) 的 Right 函数的简单实现:http://geekswithblogs.net/congsuco/archive/2005/07/07/45607.aspx
【讨论】:
org.apache.commons.lang.StringUtils.leftPad(String str, int size, char padChar)
你可以看看here
【讨论】:
这个怎么样:
s = (s.length()) < 8 ? ("00000000".substring(s.length()) + s) : s;
或
s = "00000000".substring(Math.min(8, s.length())) + s;
不过,我更喜欢使用现有的库方法,例如来自 Apache Commons StringUtils 或 String.format(...) 的方法。如果你使用库方法,你的代码的意图会更清楚,假设它有一个合理的名字。
【讨论】: