我在这里和这里都见过类似的问题。

但我不知道如何左垫字符串与零。

输入:“129018” 输出:“0000129018”

总输出长度应为10。


当前回答

以下是我的解决方案:

String s = Integer.toBinaryString(5); //Convert decimal to binary
int p = 8; //preferred length
for(int g=0,j=s.length();g<p-j;g++, s= "0" + s);
System.out.println(s);

输出:00000101

其他回答

String paddedString = org.apache.commons.lang.StringUtils.leftPad("129018", 10, "0")

第二个参数是期望的输出长度

"0"是填充字符

你可以使用apache commons StringUtils

StringUtils.leftPad("129018", 10, "0");

https://commons.apache.org/proper/commons lang/javadocs/api - 2.6 - / - org/apache/commons/lang/stringutils.html # leftPad (% 20 int,以% 20字符)

String str = "129018";
StringBuilder sb = new StringBuilder();

for (int toPrepend=10-str.length(); toPrepend>0; toPrepend--) {
    sb.append('0');
}

sb.append(str);
String result = sb.toString();

如果你需要性能并且知道字符串的最大大小,使用以下方法:

String zeroPad = "0000000000000000";
String str0 = zeroPad.substring(str.length()) + str;

注意最大字符串大小。如果它大于StringBuffer的大小,你会得到一个java.lang.StringIndexOutOfBoundsException。

以下是我的解决方案:

String s = Integer.toBinaryString(5); //Convert decimal to binary
int p = 8; //preferred length
for(int g=0,j=s.length();g<p-j;g++, s= "0" + s);
System.out.println(s);

输出:00000101