2014-02-27 165 views
2

我需要寫用戶在其中輸入對象的字符串,如「HelloIamYourNeighbor」 並返回「你好,我是你的鄰居」程序插入空白

到目前爲止,我已經能夠將大寫字母轉換爲大寫字母,但我無法在大寫字母之間插入空格。

for (int i = 0; i < input.length(); i++) { 
    if (input.contains("(?=\\p{Lu})")) { 
     str.append(" "); 
    } 
    if (Character.isUpperCase(input.charAt(i)) && i != 0) { 
     str.setCharAt(i, Character.toLowerCase(input.charAt(i))); 
} 
} 
System.out.println(str);  
+0

這可能是幫助http://stackoverflow.com/questions/4886091/insert-space-after-capital-letter?rq=1 –

回答

3

我這樣做:

StringBuilder sb = new StringBuilder(); 
for(int i=0; i<string.length(); i++) { 
    char c = string.charAt(c); 
    if(Character.isUpperCase(c)){ 
     sb.append(' '); 
    } 
    sb.append(c); 
} 
String newString = sb.toString(); 
+0

string.charAt()參數應該是我,而不是c。 – mcw

1

假設 「海峽」,是一個StringBuilder或StringBuffer的,你要刪除的 「input.contains」 檢查和str.append那裏。你也想改變str.setCharAt以下幾點:

if (Character.isUpperCase(input.charAt(i)) && i != 0) { 
    str.append(' '); // adds a space 
    str.append(Character.toLowerCase(input.charAt(i)); // add lowercase. 
} else { // Not an upper case, so just append it normally. 
    // EDIT: Added (char) cast to get the right overload of append. 
    str.append((char)input.charAt(i)); 
} 

基本上,這是什麼說的是「如果它的大寫字母,添加一個空格,然後在較低的情況下的值,否則只是追加原樣。」

+0

當我嘗試使用「Hello World」的建議時,我得到的字符位置就像這樣的結果「HelloWorldHello 5orld」 –

+0

啊,是的,我認爲你需要將input.charAt(i)轉換爲(char)。 – Daniel

1

一行代碼:

string.replaceAll("([A-Z])", " $1"); 

() - 這是捕獲組,它匹配大寫字母 它取代這場比賽有空格和查詢匹配的信。