我们可以使用String.format()来填充/前缀一个具有所需长度的字符吗?

Swa*_*ika 12 java string format

java.lang.String.format(String str, String str1)用于添加特定字符的前缀.

我可以为以下数字执行此操作:

int sendID = 202022;
String usiSuffix = String.format("%032d", sendID);
Run Code Online (Sandbox Code Playgroud)

String的长度为32,左侧为0:00000000000000000000000000202022

如何在sendID之String类的时候实现同样的目标:

String sendID = "AABB";
Run Code Online (Sandbox Code Playgroud)

我想要一个输出,如: 0000000000000000000000000000AABB

anu*_*ava 16

您可以使用这种hackish方式获得输出:

String sendID = "AABB";
String output = String.format("%0"+(32-sendID.length())+"d%s", 0, sendID);
Run Code Online (Sandbox Code Playgroud)

演示:http://ideone.com/UNVjqS


Jay*_*han 12

如果你真的想使用String.format,你可以这样做,

String sendID = "AABB";
String.format("%32s", sendID ).replace(' ', '0')
Run Code Online (Sandbox Code Playgroud)

除此之外String.format,你可以找到很多解决方案在这里.

编辑:感谢Brian指出了这个问题.以上不适用于带空格的输入.你可以尝试如下.但我不会建议下面的操作,因为它有太多的字符串操作.

String sendID = "AA BB";
String suffix = String.format("%32s", "").replace(' ', '0') + sendID;
sendID = suffix.substring(sendID.length());
Run Code Online (Sandbox Code Playgroud)

您也可以尝试使用StringUtils.leftPad

StringUtils.leftPad(sendID, 32 - sendID.length(), '0');
Run Code Online (Sandbox Code Playgroud)

  • 如果他想打"AA BB"怎么办? (3认同)

Bri*_*new 5

您不能使用String.format()任意字符填充.也许Apache Commons StringUtils.leftPad()可用于简洁的解决方案?请注意,也有一个StringUtils.rightPad().