可以java.lang.String.format(String str, String str1)
用于添加特定字符的前缀。
我可以为以下数字执行此操作:
int sendID = 202022;
String usiSuffix = String.format("%032d", sendID);
它生成长度为32的String
和带有0s的左边界:00000000000000000000000000202022
当sendID是String
时如何实现同样的目的:
String sendID = "AABB";
我想要一个输出:0000000000000000000000000000AABB
答案 0 :(得分:16)
您可以使用这种hackish方式获得输出:
String sendID = "AABB";
String output = String.format("%0"+(32-sendID.length())+"d%s", 0, sendID);
答案 1 :(得分:11)
如果您真的想使用String.format
,
String sendID = "AABB";
String.format("%32s", sendID ).replace(' ', '0')
除String.format
以外,您可以找到许多解决方案here。
修改:感谢Brian指出了这个问题。以上不适用于带空格的输入。你可以尝试如下。但我不会建议下面的操作,因为它有太多的字符串操作。
String sendID = "AA BB";
String suffix = String.format("%32s", "").replace(' ', '0') + sendID;
sendID = suffix.substring(sendID.length());
您也可以尝试使用StringUtils.leftPad
StringUtils.leftPad(sendID, 32 - sendID.length(), '0');
答案 2 :(得分:5)
您无法使用String.format()
填充任意字符。也许Apache Commons StringUtils.leftPad()可用于简洁的解决方案?请注意,还有一个StringUtils.rightPad()
。
答案 3 :(得分:2)
如果有人在将来需要它,我只需添加一些Java 8代码:
public class App {
public static void main(String[] args) {
System.out.println(leftpad("m m", 2, '@'));
System.out.println(leftpad("m m", 5, '@'));
}
static String leftpad(String s, int nb, char pad) {
return Optional.of(nb - s.length())
.filter(i -> i > 0)
.map(i-> String.format("%" + i + "s", "").replace(" ", pad + "") + s)
.orElse(s);
}
}
此版本支持添加任何字符作为填充
答案 4 :(得分:0)
这就是我使用base jdks String.format函数
解决这个问题的方法String sendId="AABB";
int length=20;
String.format("%"+length+"s",sendId).replaceAll(" ","0")