左键填充为java中的字符串变量

Gan*_*esh 6 java string

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

小智 10

你可以使用 So的leftPad功能StringUtils
,它看起来像这样:

StringUtils.leftPad(myString, 10,"0");
Run Code Online (Sandbox Code Playgroud)


Din*_*nka 8

尝试Apache StringUtils类.

import org.apache.commons.lang.StringUtils;
...

String seqNumber = "123"
int seqNumberLength = 10;
String result = StringUtils.leftPad(seqNumber, seqNumberLength,"0")
Run Code Online (Sandbox Code Playgroud)

结果是0000000123


And*_* M. 7

这应该是你做的:

System.out.println("Number: " + String.format("%010d", 1));
Run Code Online (Sandbox Code Playgroud)

给出的'格式字符串'部分在此处定义:http: //download.oracle.com/javase/1,5.0/docs/api/java/util/Formatter.html#syntax


小智 6

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

  1. 使用Apache StringUtils包;

    StringUtils.leftPad(yourString, 10, "0");
    
    Run Code Online (Sandbox Code Playgroud)
  2. 避免for/while语句的技巧:

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

    String newString = String.format("%10s", youString).replace(" ", "0");
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使用StringBuilder的经典while:

    StringBuilder sb = new StringBuilder(yourString);
    int charsToGo = 10 - sb.length();
    while(charsToGo > 0) {
       sb.insert(0, '0');
       charsToGo--;
    }
    
    Run Code Online (Sandbox Code Playgroud)

您可以封装此开发StringUtils类以避免导入太多的包.


Sla*_*hin 5

Google GuavaStrings.padStart()此方法:

返回一个长度至少为minLength的字符串,由前缀为padChar的字符串组成,该字符串是达到该长度所必需的.例如,

padStart("7",3,'0')返回"007"

padStart("2010",3,'0')返回"2010"


jef*_*unt 0

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

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

// strValue now equals "0000000005"
Run Code Online (Sandbox Code Playgroud)