有一些简单的方法可以在Java中填充字符串吗?
似乎应该在类似StringUtil的API中使用某些东西,但是我找不到能做到这一点的东西。
#1楼
这怎么样
字符串为“ hello”,所需填充为15,左侧填充为“ 0”
String ax="Hello";
while(ax.length() < 15) ax="0"+ax;
#2楼
简单的事情:
该值应该是一个字符串。 如果不是,则将其转换为字符串。 如"" + 123
或Integer.toString(123)
// let's assume value holds the String we want to pad
String value = "123";
子字符串从值长度char索引开始,直到填充的结束长度:
String padded="00000000".substring(value.length()) + value;
// now padded is "00000123"
更确切
向右垫:
String padded = value + ("ABCDEFGH".substring(value.length()));
// now padded is "123DEFGH"
左垫:
String padString = "ABCDEFGH";
String padded = (padString.substring(0, padString.length() - value.length())) + value;
// now padded is "ABCDE123"
#3楼
很多人都有一些非常有趣的技术,但是我想保持简单,所以我继续:
public static String padRight(String s, int n, char padding){
StringBuilder builder = new StringBuilder(s.length() + n);
builder.append(s);
for(int i = 0; i < n; i++){
builder.append(padding);
}
return builder.toString();
}
public static String padLeft(String s, int n, char padding) {
StringBuilder builder = new StringBuilder(s.length() + n);
for(int i = 0; i < n; i++){
builder.append(Character.toString(padding));
}
return builder.append(s).toString();
}
public static String pad(String s, int n, char padding){
StringBuilder pad = new StringBuilder(s.length() + n * 2);
StringBuilder value = new StringBuilder(n);
for(int i = 0; i < n; i++){
pad.append(padding);
}
return value.append(pad).append(s).append(pad).toString();
}
#4楼
您可以使用内置的StringBuilder append()和insert()方法来填充可变字符串长度:
AbstractStringBuilder append(CharSequence s, int start, int end) ;
例如:
private static final String MAX_STRING = " "; //20 spaces
Set<StringBuilder> set= new HashSet<StringBuilder>();
set.add(new StringBuilder("12345678"));
set.add(new StringBuilder("123456789"));
set.add(new StringBuilder("1234567811"));
set.add(new StringBuilder("12345678123"));
set.add(new StringBuilder("1234567812234"));
set.add(new StringBuilder("1234567812222"));
set.add(new StringBuilder("12345678122334"));
for(StringBuilder padMe: set)
padMe.append(MAX_STRING, padMe.length(), MAX_STRING.length());
#5楼
Apache StringUtils
有几种方法: leftPad
, rightPad
, center
和repeat
。
但是请注意,正如其他人在此答案中提到并证明的那样,JDK中的String.format()
和Formatter
类是更好的选择。 在公共代码上使用它们。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3163794