我在这里和这里都见过类似的问题。
但我不知道如何左垫字符串与零。
输入:“129018” 输出:“0000129018”
总输出长度应为10。
我在这里和这里都见过类似的问题。
但我不知道如何左垫字符串与零。
输入:“129018” 输出:“0000129018”
总输出长度应为10。
当前回答
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的解决方案。适用于字符串的格式,适用于可变长度。
public static String PadLeft(String stringToPad, int padToLength){
String retValue = null;
if(stringToPad.length() < padToLength) {
retValue = String.format("%0" + String.valueOf(padToLength - stringToPad.length()) + "d%s",0,stringToPad);
}
else{
retValue = stringToPad;
}
return retValue;
}
public static void main(String[] args) {
System.out.println("'" + PadLeft("test", 10) + "'");
System.out.println("'" + PadLeft("test", 3) + "'");
System.out.println("'" + PadLeft("test", 4) + "'");
System.out.println("'" + PadLeft("test", 5) + "'");
}
输出: “000000测试” “测试” “测试” “0测试”
如果你需要性能并且知道字符串的最大大小,使用以下方法:
String zeroPad = "0000000000000000";
String str0 = zeroPad.substring(str.length()) + str;
注意最大字符串大小。如果它大于StringBuffer的大小,你会得到一个java.lang.StringIndexOutOfBoundsException。
我用过这个:
DecimalFormat numFormat = new DecimalFormat("00000");
System.out.println("Code format: "+numFormat.format(123));
结果:00123
我希望它对你有用!
使用谷歌番石榴:
Maven:
<dependency>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
<version>14.0.1</version>
</dependency>
示例代码:
Strings.padStart("129018", 10, '0') returns "0000129018"