Java-Java:应该如何将字符串格式化成固定长度呢?

发布于 2016-12-05 03:37:36 字数 90 浏览 1271 评论 2

例如输入admin,则将其格式化为占用10个字符,即

"admin     "

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-05-08 13:09:23

如果只是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);
}

虐人心 2017-05-03 01:16:44

确实没有现成的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') + "#");
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文