【发布时间】:2012-06-24 08:20:52
【问题描述】:
我想在字符串中每两个字符后添加空格。
例如:
javastring
我想把它变成:
ja va st ri ng
我怎样才能做到这一点?
【问题讨论】:
-
使用 for 或 while 指令循环字符串变量,并在两个字符后打印一个空格!
我想在字符串中每两个字符后添加空格。
例如:
javastring
我想把它变成:
ja va st ri ng
我怎样才能做到这一点?
【问题讨论】:
您可以使用正则表达式'..'匹配每两个字符,并用"$0 "替换它以添加空格:
s = s.replaceAll("..", "$0 ");
您可能还想修剪结果以删除末尾的多余空间。
在线查看:ideone。
或者,您可以添加一个否定的前瞻断言以避免在字符串末尾添加空格:
s = s.replaceAll("..(?!$)", "$0 ");
【讨论】:
//Where n = no of character after you want space
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
【讨论】:
我为此写了一个通用的解决方案...
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);
【讨论】: