2016-03-28 42 views
-2

我無法解決這個問題如何在此Java程序中使用StringBuilder來處理字符串?

將句子轉換爲一個字符串,其中的單詞由空格分隔,只有第一個單詞以大寫字母開頭。例如,字符串「StopAndSmellTheRoses。」將被轉換爲「Stop and smell the roses。」使用StringBuilder對象來處理字符串。使用JOptionPane進行用戶輸入/輸出。使用包裝類Character來檢測單詞。

我到目前爲止。林混淆了我如何使用包裝類來檢測大寫字母,然後在他們後面插入一個空格。

public static void main(String[] args) { 


    String input; 


    input = JOptionPane.showInputDialog("Please enter a sentence in which " 
      + "every word " 
      + "begins with an upper case letter: "); 

    input = input.trim(); 

    StringBuilder sb = new StringBuilder(input); 

    for(int i = 0; i < input.length(); i++) 
    { 
     if((Character.isUpperCase(input))) 
     { 

     } 
    } 

} 
+0

祝你好運 –

+0

我知道你不喜歡的功課,但也許暗示? – JavaNoob

+0

有很多代表妓女誰會快樂地毀了你的教育,給你一個答案,以換取本網站上的幾個名譽點。你不應該要求這種幫助 - 這很容易。如果你做不到,你應該學習如何。尋求特定語法或出錯的幫助,而不是爲我們爲你做你的工作。這是懶惰和智力不誠實。 –

回答

0

我還沒有真正嘗試過運行這個,但也許沿着這些線?

// Iterate up to second last element 
for(int i = 0; i < input.length(); i++) { 
    // Get i-th character 
    char val = input.charAt(i); 
    // If i-th character is upper case 
    if((Character.isUpperCase(val))) { 
     // Insert whitespace 
     sb.append(" ");  
    } 
    // Append lower case char 
    sb.append(Character.toLowerCase(val)); 
} 
0

拆分然後加入。

String str = "StopAndSmellTheRoses."; 
String[] r = str.split("(?=\\p{Upper})"); 
StringBuilder hello = new StringBuilder(); 
String delimiter = " "; 
for(String s : r) { 
    hello.append(s).append(delimiter); 
} 
System.out.println(hello); 

輸出:Stop And Smell The Roses.

1

所以通過使用regexlookahead一個更簡單的方法:

Arrays.toString("StopAndSmellTheRoses.".split("(?=[A-Z])")) 
+0

不是「家庭作業問題」的答案,而是_real-world_的快速簡單解決方案。 –

+0

這也不能完全回答這個問題,因爲只有*第一個*單詞應該以大寫字母開頭。 –