2016-10-26 54 views
1

我似乎無法找到任何解決方案,只需在Java中使用String方法。遇到問題試圖讓串出...如何在句子中大寫字符串的首字母?

繼承人我的代碼:

import java.util.Scanner; 
public class lab5_4 
{ 
    public static void main(String[]args) 
    { 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter a sentence"); 
     String s= scan.nextLine(); 
     String s2 = s.toLowerCase(); 

     for(int count = 0; count<= s2.length()-1; count++) 
     { 
      if(s2.charAt(count)==' ') 
      { 
       String s3 = s2.substring(count,count+1); 
       String s4= s3.toUpperCase(); 
       System.out.print(s4); 
      } 
     } 
    } 
} 
+4

你什麼輸出?你期望得到什麼? – Bobbyrogers

+1

可能重複: http://stackoverflow.com/questions/1892765/how-to-capitalize-the-first-character-of-each-word-in-a-string –

回答

0

你似乎在檢查一個空格,然後調用上toUpperCase()。你希望s3成爲下一個字符,所以它應該是String s3 = s2.substring(count+1, count+2);

您也只打印字符,其中if被評估爲true,而不是所有字符。您需要打印語句在if之外。這將需要更多的基本改變,但這應該讓你開始。

2

以下方法強制輸入字符串中的所有字符變爲小寫(如默認Locale的規則所述),除非緊接前面有一個「可操作的分隔符」,在這種情況下,該字符被強制爲大寫。

public static String toDisplayCase(String s) { 

    final String ACTIONABLE_DELIMITERS = " '-/"; // these cause the character following 
               // to be capitalized 

    StringBuilder sb = new StringBuilder(); 
    boolean capNext = true; 

    for (char c : s.toCharArray()) { 
     c = (capNext) 
       ? Character.toUpperCase(c) 
       : Character.toLowerCase(c); 
     sb.append(c); 
     capNext = (ACTIONABLE_DELIMITERS.indexOf((int) c) >= 0); // explicit cast not needed 
    } 
    return sb.toString(); 
} 

測試值

字符串

馬丁奧馬利

約翰·威爾克斯·布思

又一STRING

產出

一個String

馬丁奧馬利

約翰·威爾克斯·布思

然而,另一個字符串

0

你可以使用模式選擇每句話的第一個字母 這裏的爲例

import java.util.Scanner; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Test { 

    public static void main(String[] args) throws Exception { 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter a sentence"); 
     String s= scan.nextLine(); 
     String toCappital = capitalTheFirstLetter(s); 
     System.out.println(toCappital); 

    } 

    public static String capitalTheFirstLetter(String sentence){ 
     StringBuilder stringBuilder = new StringBuilder(sentence.toLowerCase()); 
     Pattern pattern = Pattern.compile("\\s?([a-z])[a-z]*"); // ([a-z]) to group the first letter 
     Matcher matcher = pattern.matcher(sentence.toLowerCase()); 
     while (matcher.find()) { 
      String fistLetterToCapital = matcher.group(1).toUpperCase(); 
      stringBuilder.replace(matcher.start(1), matcher.end(1), fistLetterToCapital); // replace the letter with it capital 
     } 
     return stringBuilder.toString(); 
    } 

} 

輸出

Enter a sentence 
how to capitalize the first letter of a string in a sentence ? 
How To Capitalize The First Letter Of A String In A Sentence ?