【发布时间】:2010-12-17 11:21:43
【问题描述】:
我需要在字符串的每个字符后插入一个空格。
即
String name = "Joe";
应该变成:"J o e"
【问题讨论】:
我需要在字符串的每个字符后插入一个空格。
即
String name = "Joe";
应该变成:"J o e"
【问题讨论】:
更短的将使用正则表达式:
System.out.println("Joe".replaceAll(".(?!$)", "$0 "));
【讨论】:
对于 Android 和 Kotlin 用户,如果您想在每个 X 个字符后添加空格,请使用此
val stringWithSpaceAfterEvery4thChar = stringWith12Chars?.replace("....".toRegex(), "$0 ")
在这里,我在方法中添加了 4 个点,以便在整个字符串中的每 4 个字符之后添加 空格。 如果您希望在每 2 个字符后添加空格,则在方法中仅添加 2 个点。
我的变量:
stringWith12Chars = "123456789012"
输出将是,
stringWithSpaceAfterEvery4thChar = "1234 5678 9012"
【讨论】:
类似:
String joe = "Joe";
StringBuilder sb = new StringBuilder();
for (char c: joe.toCharArray()) {
sb.append(c).append(" ");
}
System.out.println(sb.toString().trim());
【讨论】:
sb.setLength(sb.length() > 0 ? sb.length() - 1 : 0).toString(); 即修剪构建器,而不是结果。
这将隔开每个单词中的所有字母,而不是单词之间的空格
"Joe Black".replaceAll("\\B", " ") -> "J o e B l a c k"
这将为每个字符放置空格(包括原始空格)
"Joe Black".replaceAll("\\B|\\b", " ") -> " J o e B l a c k "
【讨论】:
使用 kotlin
val textToBeDevided = "123456789"
textToBeDevided
.subSequence(1, textToBeDevided.length)
.chunked(3) // group every 3 chars
.joinToString(" ") // merge them applying space
【讨论】:
.subSequence 调用是多余的,因为String 已经是CharSequence。此外,字符串中的索引从 0 开始,因此您在输出中丢失了 "1"。
char[] stringArray = strOrig.toCharArray();
StringBuilder sb = new StringBuilder();
for(int index=0; index < stringArray.length; index++) {
sb.append(stringArray[index]);
sb.append(" ");
}
【讨论】:
没有正则表达式的解决方案
name.chars().mapToObj(i -> (char) i + " ").collect(Collectors.joining()).strip()
不喜欢正则表达式,因为编译方法慢
【讨论】:
您可以使用 String 的 toCharArray() 将 Joe 转换为 char[],然后遍历 char[] 将 char 抓取到另一个 char[] 中,并且在将 char 添加到第二个 char[] 时,添加一个空格字符 ' “”。在循环中设置 if-else 以检测最后一个字符,这样您就不会在最后一个字符后面意外添加空格字符。使用 String 对 valueOf() 生成的 char[] 将其转换为 String 对象。
【讨论】:
删除最后的空格:
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());
【讨论】: