在Java中如何将字符串填充为8个字符长度?

4
我正在阅读,但找不到合适的代码片段。我正在寻找一个函数,它接受一个字符串并在左侧填充零(0),直到整个字符串长度为8位。所有其他代码片段都只能让整数控制填充多少,而不能控制填充多少,直到整个字符串长度为x位。使用Java实现。
示例:
BC238 => 000BC289 4 => 00000004
谢谢。

将一段十六进制代码转换为有效的8个字符长度的十六进制代码。 - BRampersad
可能是左侧填充字符串零的重复问题。 - Stephen C
4个回答

16

如果你有一个长度不超过8个字符的字符串,可以像这样处理:

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));

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

You can take a look here


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(...)方法。如果使用库方法且方法名合理,代码意图会更加清晰。


我喜欢这个;子字符串计算比我的解决方案简单。 - Ted Hopp

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接