2017-03-05 201 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

相關問題