kha*_*hik 345
如果您的字符串仅包含数字,则可以将其设为整数,然后执行填充:
String.format("%010d", Integer.parseInt(mystring));
Run Code Online (Sandbox Code Playgroud)
如果不是,我想知道如何做到.
Oli*_*els 135
String paddedString = org.apache.commons.lang.StringUtils.leftPad("129018", 10, "0")
Run Code Online (Sandbox Code Playgroud)
第二个参数是所需的输出长度
"0"是填充字符
Ric*_* II 104
这将填充任何字符串,总宽度为10,而不必担心解析错误:
String unpadded = "12345";
String padded = "##########".substring(unpadded.length()) + unpadded;
//unpadded is "12345"
//padded is "#####12345"
Run Code Online (Sandbox Code Playgroud)
如果你想要右键:
String unpadded = "12345";
String padded = unpadded + "##########".substring(unpadded.length());
//unpadded is "12345"
//padded is "12345#####"
Run Code Online (Sandbox Code Playgroud)
您可以将"#"字符替换为您要填充的任何字符,重复您希望字符串总宽度的次数.例如,如果要在左侧添加零,以便整个字符串长度为15个字符:
String unpadded = "12345";
String padded = "000000000000000".substring(unpadded.length()) + unpadded;
//unpadded is "12345"
//padded is "000000000012345"
Run Code Online (Sandbox Code Playgroud)
这比khachik的答案的好处是,它不使用Integer.parseInt,它可以抛出异常(例如,如果要填充的数字太大,如12147483647).缺点是,如果你填充的内容已经是int,那么你必须将它转换为String并返回,这是不可取的.
所以,如果你确定它是一个int,那么khachik的答案很有用.如果没有,那么这是一种可能的策略.
the*_*ejh 51
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();
Run Code Online (Sandbox Code Playgroud)
小智 50
String str = "129018";
String str2 = String.format("%10s", str).replace(' ', '0');
System.out.println(str2);
Run Code Online (Sandbox Code Playgroud)
小智 16
您可以使用apache commons StringUtils
StringUtils.leftPad("129018", 10, "0");
Run Code Online (Sandbox Code Playgroud)
http://commons.apache.org/lang/api-2.3/org/apache/commons/lang/StringUtils.html
Nag*_*S R 13
格式化字符串使用
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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:字符串:00000wrwer
第一个参数是要格式化的字符串,第二个参数是所需输出长度的长度,第三个参数是要用于填充字符串的char.
使用链接下载jar http://commons.apache.org/proper/commons-lang/download_lang.cgi
Har*_*edo 10
如果您需要性能并知道字符串的最大大小,请使用以下命令:
String zeroPad = "0000000000000000";
String str0 = zeroPad.substring(str.length()) + str;
Run Code Online (Sandbox Code Playgroud)
请注意最大字符串大小.如果它大于StringBuffer大小,你会得到一个java.lang.StringIndexOutOfBoundsException.
一个老问题,但我也有两种方法。
对于固定(预定义)长度:
public static String fill(String text) {
if (text.length() >= 10)
return text;
else
return "0000000000".substring(text.length()) + text;
}
Run Code Online (Sandbox Code Playgroud)
对于可变长度:
public static String fill(String text, int size) {
StringBuilder builder = new StringBuilder(text);
while (builder.length() < size) {
builder.append('0');
}
return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)
使用谷歌番石榴:
马文:
<dependency>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
<version>14.0.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
示例代码:
Strings.padStart("129018", 10, '0') returns "0000129018"
Run Code Online (Sandbox Code Playgroud)
我更喜欢这个代码:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
进而:
System.out.println(StrMgr.leftPad("hello", 20, "x"));
System.out.println(StrMgr.rightPad("hello", 20, "x"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
400009 次 |
| 最近记录: |