2017-03-05 294 views
0

我需要在字符串中的每两个单词后添加一个逗号。JAVA - 在字符串中的每两个单词之后添加一个逗号?

String s = "every day every night every minute every second"; 

我想造成这种格式:

String s = "every day, every night, every minute, every second"; 

起初我还以为这将是很容易解决,但我无法来解决这个问题。任何帮助将不胜感激谢谢。

+0

你有什么试过的?有很多可能的解决方案。 – jlordo

+0

获取所有空格并为每个秒空间设置逗号。 –

+2

这可能会起作用:'String result = s.replaceAll(“([^] + [^] +)”,“$ 1,”);' – Nulano

回答

3

您可以使用下面的正则表达式:

String result = s.replaceAll("([^ ]+ [^ ]+) ", "$1, "); 

您可以使用网上正则表达式测试,看看它是如何工作的:https://regex101.com/r/9eSRzC/2

编辑:另外,如果你不希望使用正则表达式,您可以使用此代码:

String s = "every day every night every minute every second"; 
StringBuilder sb = new StringBuilder(); 
int last = -1; 
while (true) { 
    int i = s.indexOf(' ', last+1); 
    if (i < 0) break; 
    i = s.indexOf(' ', i+1); 
    if (i < 0) break; 
    sb.append(s.substring(last+1,i)).append(", "); 
    last = i; 
} 
sb.append(s.substring(last+1)); 
String result = sb.toString(); 
System.out.println(result); 
1

如果你不想使用正则表达式,这将做的工作:

String[] strArray = s.split(" "); 
StringBuilder sb = new StringBuilder(); 
for(int i=0; i<strArray.length; i++) { 
    sb.append(strArray[i]);  
    if(i%2!=0) { 
    sb.append(","); 
    } 
    sb.append(" "); 
} 
return sb.toString(); 
+0

此代码工作正常!非常感谢:) –

+1

请注意,这仍然使用正则表达式在拆分调用。更好的方法是迭代原始字符串中的字符并分割自己。 – Nulano

0
String s = "every day every night every minute every second"; 
    char[] str = s.toCharArray(); 
    int count = 0; 
    for(int i=0;i<str.length;i++){ 
     if(str[i] == ' '){ 
      count++; 
      if(count%2 == 0){ 
       str[i] = ','; 
      } 
     } 
    } 
    System.out.println(new String(str)); 
+0

这有一个删除空间并用逗号替换它的问题。 (逗号后应该有一个空格 - 请参阅示例。) – Nulano

相关问题