左边的零填充到java中的字符串变量

时间:2011-11-01 17:53:43

标签: java string

我有一个10位数的字符串变量,如果小于10,我需要在变量之前追加'0'。示例如果字符串是9909909,则应将其返回为0009909909.如何在java中执行此操作

10 个答案:

答案 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)

有一些方法可以做到这一点。您可以测试这些方法的性能来创建单元测试。你需要自己测试一下:我没有任何编译就写了它:

  1. 使用Apache StringUtils包;

    StringUtils.leftPad(yourString, 10, "0");
    
  2. 避免使用for / while语句的技巧:

    String newString = "0000000000".concat(yourString);
    newString = newString.substring(newString.length() - 10);
    
  3. 使用替换的技巧:

    String newString = String.format("%10s", youString).replace(" ", "0");
    
  4. 在StringBuilder中使用经典的while:

    StringBuilder sb = new StringBuilder(yourString);
    int charsToGo = 10 - sb.length();
    while(charsToGo > 0) {
       sb.insert(0, '0');
       charsToGo--;
    }
    
  5. 您可以封装此开发StringUtils类以避免导入太多的包。

答案 5 :(得分:2)

  1. 获取字符串的大小 - String.size();
  2. 如果size小于10,则创建一个带零的字符串(无论你需要多少)。你可以循环。
  3. 连接两个字符串 - “zeros string”是第一个字符串。
  4. 希望这有帮助!

答案 6 :(得分:0)

int value = 5;
String strValue = "" + value;

while (strValue.length() < 10) {
  strValue = "0" + strValue;
}

// strValue now equals "0000000005"
  • value替换为您的实际数字
  • 10替换为您的限制(如果它是固定限制,请考虑使用final变量)
  • 如果这是速度关键型操作,请考虑使用StringBufferStringBuilder来代替纯字符串连接。

答案 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();