在字符之间添加空格

9
我希望在字符串中的每两个字符之间添加空格。
例如:
javastring 

我希望你能够将这个翻译成中文:

ja va st ri ng

我该如何实现这个目标?

1
可能重复:https://dev59.com/Jm855IYBdhLWcg3wNxgM - Zakaria
使用 for 或者 while 指令循环遍历字符串变量,在每两个字符后打印一个空格! - Ali Ben Messaoud
3个回答

49

您可以使用正则表达式'..'匹配每两个字符,并用"$0 "替换它以添加空格:

s = s.replaceAll("..", "$0 ");
你可能还想修剪结果以删除末尾的额外空格。
在线查看其工作原理:ideone
或者,您可以添加负向先行断言以避免在字符串末尾添加空格。
s = s.replaceAll("..(?!$)", "$0 ");

谢谢,你刚刚帮我省去了实现循环的麻烦。 - Ali Tamoor

5

//其中n为您想要添加空格后的字符数

int n =2;
StringBuilder str = new StringBuilder("ABCDEFGHIJKLMNOP");
int idx = str.length() - n;
while (idx > 0){
   str.insert(idx, " ");
   idx = idx - n;
}
return str.toString();

说明:这段代码会从右到左添加空格。
str = "ABCDEFGH" int idx = total length - 2; //8-2=6
while (8>0)
{
    str.insert(idx, " "); //this will insert space at 6th position
    idx = idx - n; // then decrement 6-2=4 and run loop again
} 

最终输出将会是:
AB CD EF GH

1
这段代码将从右到左添加空格, str = "ABCDEFGH" int idx = 总长度 - 2;//8-2=6 while (8>0){ str.insert(idx, " ");//这将在第6个位置插入空格 idx = idx - n;//然后将6-2=4减少并再次运行循环 } 最终输出将是AB CD EF GH 希望这个解释有所帮助。 - Nitin Divate

1
我为此编写了一个通用解决方案...
public static String insertCharacterForEveryNDistance(int distance, String original, char c){
    StringBuilder sb = new StringBuilder();
    char[] charArrayOfOriginal = original.toCharArray();
    for(int ch = 0 ; ch < charArrayOfOriginal.length ; ch++){
        if(ch % distance == 0)
            sb.append(c).append(charArrayOfOriginal[ch]);
        else
            sb.append(charArrayOfOriginal[ch]);
    }
    return sb.toString();
}

那么就像这样调用它...

String result = InsertSpaces.insertCharacterForEveryNDistance(2, "javastring", ' ');
System.out.println(result);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接