我有一个10位数的字符串变量,如果小于10,我需要在变量之前追加'0'.示例如果字符串是9909909,则应将其返回为0009909909.如何在java中执行此操作
小智 10
你可以使用
So的leftPad功能StringUtils
,它看起来像这样:
StringUtils.leftPad(myString, 10,"0");
Run Code Online (Sandbox Code Playgroud)
尝试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
这应该是你做的:
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
有一些方法可以做到这一点.您可以测试这些方法的性能来创建单元测试.你需要自己测试一下:我编写它没有任何编译:
使用Apache StringUtils包;
StringUtils.leftPad(yourString, 10, "0");
Run Code Online (Sandbox Code Playgroud)避免for/while语句的技巧:
String newString = "0000000000".concat(yourString);
newString = newString.substring(newString.length() - 10);
Run Code Online (Sandbox Code Playgroud)使用替换的技巧:
String newString = String.format("%10s", youString).replace(" ", "0");
Run Code Online (Sandbox Code Playgroud)使用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类以避免导入太多的包.
Google Guava有Strings.padStart()此方法:
返回一个长度至少为minLength的字符串,由前缀为padChar的字符串组成,该字符串是达到该长度所必需的.例如,
padStart("7",3,'0')返回"007"
padStart("2010",3,'0')返回"2010"
int value = 5;
String strValue = "" + value;
while (strValue.length() < 10) {
strValue = "0" + strValue;
}
// strValue now equals "0000000005"
Run Code Online (Sandbox Code Playgroud)
value为您的实际号码10为您的限制(如果是固定限制,请考虑使用final变量)| 归档时间: |
|
| 查看次数: |
38304 次 |
| 最近记录: |