Java-Java:应该如何将字符串格式化成固定长度呢?
例如输入admin,则将其格式化为占用10个字符,即
"admin "
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
例如输入admin,则将其格式化为占用10个字符,即
"admin "
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
如果只是ASCII字符,可以这样处理:
public static String getFixedLenString(String str, int len, char paddingChar) {
if (str == null) {
return null;
}
if (len <= 0) {
// Do something
}
if (str.length() >= len) {
return str.substring(0, len);
}
char[] cs = new char[len];
str.getChars(0, str.length(), cs, 0);
Arrays.fill(cs, str.length(), len, paddingChar);
return new String(cs);
}
确实没有现成的api, apache commons/lang/StringUtils.html#rightPad()应该和你的需求也不符。
我写了几个实现。 第一个用String.format最简单, 但是不能自己指定 padding character, 供参考把。
// padding character does not work
private String getFixedLenString1(String str, int len, char c){
if(str == null)
str = "";
if (str.length() > len)
str = str.substring(0, len);
return String.format("%-10s", str);
}
//extra memory used
private String getFixedLenString2(String str, int len, char c){
if(str == null)
str = "";
char arr[] =new char[len];
Arrays.fill(arr, 0, len, c);
str += new String(arr);
return str.substring(0, len);
}
private String getFixedLenString3(String str, int len, char c){
if(str == null)
str = "";
char arr[] = Arrays.copyOf(str.toCharArray(), len);
if (str.length() < len)
Arrays.fill(arr, str.length(), len, c);
return new String(arr);
}
@Test
public void testGetFixedLenString1(){
System.out.println("#" + getFixedLenString1(null, 10, 'X') + "#");
System.out.println("#" + getFixedLenString1("abc", 10, 'X') + "#");
System.out.println("#" + getFixedLenString1("abcdefghijklmnopq", 10, 'X') + "#");
}
@Test
public void testGetFixedLenString2(){
System.out.println("#" + getFixedLenString2(null, 10, 'X') + "#");
System.out.println("#" + getFixedLenString2("abc", 10, 'X') + "#");
System.out.println("#" + getFixedLenString2("abcdefghijklmnopq", 10, 'X') + "#");
}
@Test
public void testGetFixedLenString3(){
System.out.println("#" + getFixedLenString3(null, 10, 'X') + "#");
System.out.println("#" + getFixedLenString3("abc", 10, 'X') + "#");
System.out.println("#" + getFixedLenString3("abcdefghijklmnopq", 10, 'X') + "#");
}