下面是字符串,例如:
"Apple"
我想加零来填充8个字符:
"000Apple"
我该怎么做呢?
下面是字符串,例如:
"Apple"
我想加零来填充8个字符:
"000Apple"
我该怎么做呢?
当前回答
如果你想用纯Java编写程序,你可以遵循下面的方法,或者有很多String Utils可以帮助你更好地使用更高级的功能。
使用一个简单的静态方法可以实现如下所示。
public static String addLeadingText(int length, String pad, String value) {
String text = value;
for (int x = 0; x < length - value.length(); x++) text = pad + text;
return text;
}
你可以使用上面的方法addLeadingText(长度,填充文本,你的文本)
addLeadingText(8, "0", "Apple");
输出是000Apple
其他回答
这并不漂亮,但很有效。如果你有apache commons,我建议你使用它
if (val.length() < 8) {
for (int i = 0; i < val - 8; i++) {
val = "0" + val;
}
}
你可以使用字符串。格式化方法,用于另一个答案生成一个0的字符串,
String.format("%0"+length+"d",0)
这可以通过动态调整格式字符串中前导0的数量来应用于您的问题:
public String leadingZeros(String s, int length) {
if (s.length() >= length) return s;
else return String.format("%0" + (length-s.length()) + "d%s", 0, s);
}
这仍然是一个混乱的解决方案,但优点是可以使用整数参数指定结果字符串的总长度。
以防你不得不在没有库的帮助下做这件事:
("00000000" + "Apple").substring("Apple".length())
(工作,只要你的字符串不超过8个字符。)
我喜欢用零填充字符串的解决方案
String.format("%1$" + length + "s", inputString).replace(' ', '0');
with length = "8" and inputString = "Apple"
你可能得处理edgecase。这是一个泛型方法。
public class Test {
public static void main(String[] args){
System.out.println(padCharacter("0",8,"hello"));
}
public static String padCharacter(String c, int num, String str){
for(int i=0;i<=num-str.length()+1;i++){str = c+str;}
return str;
}
}