String paddedString = org.apache.commons.lang.StringUtils.leftPad("129018", 10, "0")
第二个参数是期望的输出长度。
"0" 是填充字符。String
是不可变的(参见 *String is immutable. What exactly is the meaning?*),因此StringUtils.leftPad(variable, 10, "0");
不会改变variable
的值。您需要将结果赋值给它,像这样:variable = StringUtils.leftPad(variable, 10, "0");
。 - falsarellaString unpadded = "12345";
String padded = "##########".substring(unpadded.length()) + unpadded;
//unpadded is "12345"
//padded is "#####12345"
String unpadded = "12345";
String padded = unpadded + "##########".substring(unpadded.length());
//unpadded is "12345"
//padded is "12345#####"
String unpadded = "12345";
String padded = "000000000000000".substring(unpadded.length()) + unpadded;
//unpadded is "12345"
//padded is "000000000012345"
String str = "129018";
String str2 = String.format("%10s", str).replace(' ', '0');
System.out.println(str2);
String str = "129018";
StringBuilder sb = new StringBuilder();
for (int toPrepend=10-str.length(); toPrepend>0; toPrepend--) {
sb.append('0');
}
sb.append(str);
String result = sb.toString();
StringBuilder
的缓冲区大小,其默认值为16,对于大格式大小,请正确设置缓冲区大小,例如:
StringBuilder sb = new StringBuilder();
- Welington Veiga你可以使用Apache Commons StringUtils
StringUtils.leftPad("129018", 10, "0");
要格式化字符串,请使用
import org.apache.commons.lang.StringUtils;
public class test {
public static void main(String[] args) {
String result = StringUtils.leftPad("wrwer", 10, "0");
System.out.println("The String : " + result);
}
}
输出:字符串:“00000wrwer”
第一个参数是要格式化的字符串,第二个参数是期望输出长度,第三个参数是用于填充字符串的字符。
使用此链接下载jar文件:http://commons.apache.org/proper/commons-lang/download_lang.cgi
如果你需要高性能,并且知道字符串的最大尺寸,请使用以下代码:
String zeroPad = "0000000000000000";
String str0 = zeroPad.substring(str.length()) + str;
请注意最大字符串大小。如果它比StringBuffer的大小要大,您将会得到一个java.lang.StringIndexOutOfBoundsException。
public static String fill(String text) {
if (text.length() >= 10)
return text;
else
return "0000000000".substring(text.length()) + text;
}
public static String fill(String text, int size) {
StringBuilder builder = new StringBuilder(text);
while (builder.length() < size) {
builder.append('0');
}
return builder.toString();
}
public final class StrMgr {
public static String rightPad(String input, int length, String fill){
String pad = input.trim() + String.format("%"+length+"s", "").replace(" ", fill);
return pad.substring(0, length);
}
public static String leftPad(String input, int length, String fill){
String pad = String.format("%"+length+"s", "").replace(" ", fill) + input.trim();
return pad.substring(pad.length() - length, pad.length());
}
}
然后:
System.out.println(StrMgr.leftPad("hello", 20, "x"));
System.out.println(StrMgr.rightPad("hello", 20, "x"));
StrMgr.leftPad
是在字符串后面添加填充,而StrMgr.rightPad
是在前面添加。至少对我来说,我希望左填充将填充添加到字符串的前面。 - PassKit
String.format()
支持使用BigInteger
,方法是:String.format("%010d", new BigInteger("9999999999"))
。 - real_paul