2012-06-22 101 views
3

我想在字符串中的每兩個字符後添加空格。在字符間添加空格

例如:

javastring 

我希望把它變成:

ja va st ri ng 

我怎樣才能做到這一點?

+1

可能重複:HTTP://stackoverflow.com/questions/4469984/how-to-insert-space-after-character-of-an-an-string-in-java – Zakaria

+0

使用for或while指令循環字符串變量,並在兩個字符後打印空格! – alibenmessaoud

回答

21

您可以使用正則表達式'..'每兩個字符相匹配,並與"$0 "更換,以增加空間:

s = s.replaceAll("..", "$0 "); 

您可能還需要修整的結果爲最終刪除多餘的空間。

看到它在線工作:ideone

另外,您可以添加式斷言,以避免在字符串的結尾添加的空間:

s = s.replaceAll("..(?!$)", "$0 "); 
+0

謝謝,它的工作 –

1

我寫了這一個通用的解決方案......

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); 
1

//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 
+0

你可以添加一些詞來解釋這是如何工作的? – Kmeixner

+1

此代碼將從右到左添加空格, str =「ABCDEFGH」 int idx =總長度-2; // 8-2 = 6 while(8> 0)str.insert(idx,「」 ); //這將在第6個位置插入空格 idx = idx - n; //然後遞減6-2 = 4並再次運行循環 } 最終輸出將爲AB CD EF GH 希望這篇文章有助於 –

相關問題