2014-02-23 153 views
0

誰能告訴我爲什麼下面的代碼打印1高街,而不是1的高街?:善用第一個字符中的每一個字在Java中的字符串(但忽略特定的單詞)

String propertyPageTitle = "1-the-high-street"; 
    propertyPageTitle = propertyPageTitle.replace("-", " "); 
    WordUtils.capitalizeFully(propertyPageTitle); 
    System.out.println(propertyPageTitle); 

編輯展示的解決方案:

String propertyPageTitle = "1-the-high-street"; 
    propertyPageTitle = propertyPageTitle.replace("-", " "); 
    propertyPageTitle = WordUtils.capitalizeFully(propertyPageTitle); 
    System.out.println(propertyPageTitle); 

假如我想忽略這個詞「和」如果出現的話(我從.csv讀取值),而不是更改爲標題字符?這怎麼可能。

回答

1

WordUtils.capitalizeFully不更改原始字符串,而是返回大寫的字符串。

propertyPageTitle = WordUtils.capitalizeFully(propertyPageTitle); 
+1

偉大 - 謝謝你 – Steerpike

+0

真的,我想利用全(每個字符串的第一個字母),除非這個詞是「和」 。所以我想我可以圍繞capitalize建立一些邏輯來處理這種情況 – Steerpike

1

出現這種情況是因爲WordUtilscapitalizeFully(String)返回String具有預期的答案。所以嘗試:

propertyPageTitle = WordUtils.capitalizeFully(propertyPageTitle); 

然後它會工作。

0
String firstStr = "i am fine"; 
String capitalizedStr = WordUtils.capitalizeFully(firstStr); 
System.out.println(capitalizedStr); 

返回應採取以獲得方法的輸出。它是在Java的String的所有方法共同

0
String toBeCapped = "1 the high street and 2 low street"; 

    String[] tokens = toBeCapped.split("\\s"); 
    StringBuilder builder = new StringBuilder(); 

    for (int i = 0; i < tokens.length; i++) { 
     if (!tokens[i].equalsIgnoreCase("and")) { 
      char capLetter = Character.toUpperCase(tokens[i].charAt(0)); 
      builder.append(" "); 
      builder.append(capLetter); 
      builder.append(tokens[i].substring(1, tokens[i].length())); 
     } else { 
      builder.append(" and"); 
     } 
    } 
    toBeCapped = builder.toString().trim(); 
    System.out.println(toBeCapped); 

輸出:

1 The High Street and 2 Low Street 
相關問題