在Java中,如何在现有字符串的每个字符后插入空格?

在Java中,如何在现有字符串的每个字符后插入空格?,java,string,Java,String,我需要在字符串的每个字符后插入一个空格 i、 e。 String name=“Joe” 应该变成:“joe”类似于: String joe = "Joe"; StringBuilder sb = new StringBuilder(); for (char c: joe.toCharArray()) { sb.append(c).append(" "); } System.out.println(sb.toString().trim()); 您可以使用字符串的tocharray()将

我需要在字符串的每个字符后插入一个空格

i、 e。
String name=“Joe”

应该变成:
“joe”

类似于:

String joe = "Joe";
StringBuilder sb = new StringBuilder();

for (char c: joe.toCharArray()) {
   sb.append(c).append(" ");
}

System.out.println(sb.toString().trim());

您可以使用字符串的tocharray()将Joe转换为char[],然后遍历char[]将该字符转换为另一个char[],在将该字符添加到第二个char[]时,添加一个空格字符'''''。在循环中设置if-else以检测最后一个字符,这样就不会在最后一个字符后面意外添加空格字符。使用字符串将结果char[]的值()转换为字符串对象。

char[]stringArray=strOrig.tocharray();
char[] stringArray = strOrig.toCharArray(); 
StringBuilder sb = new StringBuilder();

for(int index=0; index < stringArray.length; index++) {
   sb.append(stringArray[index]);
   sb.append(" ");
}
StringBuilder sb=新的StringBuilder(); 对于(int index=0;index
Shorter将使用正则表达式:

System.out.println("Joe".replaceAll(".(?!$)", "$0 "));

这会将每个单词中的所有字母隔开,而不是在单词之间

"Joe Black".replaceAll("\\B", " ") -> "J o e B l a c k"
这将为每个字符放置空格(包括原始空格)


删除最后一个空格:

String joe = "Joe"; 
StringBuilder sb = new StringBuilder(); 
String sep = "";
for (char c: joe.toCharArray()) { 
    sb.append(sep).append(c);
    sep = " ";
} 

System.out.println(sb.toString()); 

对于Android&Kotlin用户,如果您想在每个X字符后添加空格,请使用此选项

val stringWithSpaceAfterEvery4Chars = stringWith16Chars?.replace("....".toRegex(), "$0 ")
在这里,我在方法中添加了4个点,以便在整个字符串的每4个字符后添加空格。 如果每2个字符后需要空格,则在方法中仅添加2个点

我的变量:

stringWith16Chars = "123456789012"
而输出将是,

stringWithSpaceAfterEvery4Chars = "1234 5678 9012"
无正则表达式的解

name.chars().mapToObj(i -> (char) i + " ").collect(Collectors.joining()).strip()
不喜欢正则表达式,因为使用kotlin编译方法很慢

val textToBeDevided = "123456789" 
textToBeDevided
   .subSequence(1, textToBeDevided.length) 
   .chunked(3) // group every 3 chars
   .joinToString(" ") // merge them applying space

略微优化:
sb.setLength(sb.length()>0?sb.length()-1:0).toString()即修剪生成器,而不是结果。这有一个额外的优势(与在字符上循环相比),即不会打断代理项对。现在有两个问题@沃特:你说的代理项对是什么意思?@StuperUser:用于表示“基本多语言平面”之外的字符对。请看课程描述,这是完美的!
val textToBeDevided = "123456789" 
textToBeDevided
   .subSequence(1, textToBeDevided.length) 
   .chunked(3) // group every 3 chars
   .joinToString(" ") // merge them applying space