我有一个10位数的字符串变量,如果小于10,我需要在变量之前追加'0'。示例如果字符串是9909909,则应将其返回为0009909909.如何在java中执行此操作
答案 0 :(得分:9)
您可以使用leftPad
的{{1}}功能
所以,它看起来像这样:
StringUtils
答案 1 :(得分:8)
尝试使用Apache StringUtils类。
import org.apache.commons.lang.StringUtils;
...
String seqNumber = "123"
int seqNumberLength = 10;
String result = StringUtils.leftPad(seqNumber, seqNumberLength,"0")
结果是0000000123
答案 2 :(得分:6)
这应该是你做的:
System.out.println("Number: " + String.format("%010d", 1));
给出的'格式字符串'部分在这里定义: http://download.oracle.com/javase/1,5.0/docs/api/java/util/Formatter.html#syntax
答案 3 :(得分:5)
Google Guava为此目的提供方法Strings.padStart()
:
返回一个长度至少为minLength的字符串,该字符串由前缀为padChar的字符串组成,该字符串是达到该长度所必需的。例如,
padStart(“7”,3,'0')返回“007”
padStart(“2010”,3,'0')返回“2010”
答案 4 :(得分:5)
有一些方法可以做到这一点。您可以测试这些方法的性能来创建单元测试。你需要自己测试一下:我没有任何编译就写了它:
使用Apache StringUtils包;
StringUtils.leftPad(yourString, 10, "0");
避免使用for / while语句的技巧:
String newString = "0000000000".concat(yourString);
newString = newString.substring(newString.length() - 10);
使用替换的技巧:
String newString = String.format("%10s", youString).replace(" ", "0");
在StringBuilder中使用经典的while:
StringBuilder sb = new StringBuilder(yourString);
int charsToGo = 10 - sb.length();
while(charsToGo > 0) {
sb.insert(0, '0');
charsToGo--;
}
您可以封装此开发StringUtils类以避免导入太多的包。
答案 5 :(得分:2)
希望这有帮助!
答案 6 :(得分:0)
int value = 5;
String strValue = "" + value;
while (strValue.length() < 10) {
strValue = "0" + strValue;
}
// strValue now equals "0000000005"
value
替换为您的实际数字10
替换为您的限制(如果它是固定限制,请考虑使用final
变量)答案 7 :(得分:0)
int zeroesNeeded = 10 - myString.length();
while(zeroesNeeded > 0)
{
myString = "0" + myString;
zeroesNeeded--;
}
答案 8 :(得分:0)
for (int i=0; i<(10-str.length); i++) {
str = "0" + str;
}
答案 9 :(得分:0)
使用StringBuilder
并添加前缀,直到获得所需的长度。
StringBuilder sb = new StringBuilder(myString);
while (sb.length() < 10)
{
sb.insert(0,'0');
}
myString = sb.toString();