Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在字符串中插入填充空格_Java_String - Fatal编程技术网

Java 在字符串中插入填充空格

Java 在字符串中插入填充空格,java,string,Java,String,相当基本的问题,但难以形成可接受的形式: 我想通过每3个空格插入一个填充来转换字符串,如 “123456789”->“123456789” “abcdefgh”->“abc def gh” 我的代码目前是 public String toSpaceSeparatedString(String s) { if (s == null || s.length() < 3) { return s; } StringBuilder builder = new StringBui

相当基本的问题,但难以形成可接受的形式:

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

“123456789”->“123456789”

“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();
}
public String到spaceseparatedstring(字符串s){
如果(s==null | | s.length()<3){
返回s;
}
StringBuilder=新的StringBuilder();
int i;
对于(i=0;i

有人能提供更优雅的解决方案吗?

您可以使用
printf
String.format
如下:

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

有关格式化输出/字符串的详细信息。

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

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

如果已经有一个空间,则不会放置空间:

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

<> >代码> RealPult看起来是最好的,但是如果你考虑一个像12345的数字,它将被转换成123个45。但是在数字上我认为应该是12345

谢谢,我找到了一个类似的解决方案,但是对于这样一个简单的任务来说,regex始终是最后的选择真正地我认为regex永远是首选!它可以通过更简单的正则表达式完成。更新了答案。@jellybean:这是一行。如果你对它正在做的事情添加了一个好的注释,或者将其放入一个具有意义的名称的实用方法中,我认为在这里使用regex是非常好的。在更新之后,它的可读性/可接受性要高得多,谢谢。这意味着替换
for
循环中的代码,以及之后的附加,对吗?不错,但我想摆脱这个丑陋的循环。谢谢。。。但这不是我的选择!酷-只是想“超额完成”:)你能提出什么替代方案?