将填充空格插入字符串

时间:2011-06-22 10:23:30

标签: java string

非常基本的问题,但很难进入可接受的形式:

我想通过每3个空格插入一个填充来转换字符串,如

“123456789” - > “123 456 789”

“abcdefgh” - > “abc def gh”

我的代码目前是

public String toSpaceSeparatedString(String s) {
  if (s == null || s.length() < 3) {
    return s;
  }

  StringBuilder builder = new StringBuilder();
  int i; 
  for (i = 0; i < s.length()-3; i += 3) {
    builder.append(s.substring(i, i+3));
    builder.append(" ");
  }

  builder.append(s.substring(i, s.length()));

  return builder.toString();
}

任何人都可以提供更优雅的解决方案吗?

4 个答案:

答案 0 :(得分:10)

您可以使用正则表达式执行此操作:

"abcdefgh".replaceAll(".{3}", "$0 ")

答案 1 :(得分:3)

您可以这样使用printfString.format

 builder.append(String.format("%4s", threeDigitString));

有关格式化输出/字符串in the API的更多信息。

答案 2 :(得分:1)

如果已有空格,则不会放置空格:

"abcdef gh".replaceAll("\\s*(..[^ ])\\s*", "$1 "); // --> "abc def gh"

答案 3 :(得分:1)

replaceAll看起来是最好的,但是如果你考虑像12345这样的数字它将被转换为123 45.但在数字中我认为它应该是12 345