2012-12-13 138 views
-1

我一直使用apache WordUtils來大寫字符串中的每個第一個字母,但我只需要某些單詞的首字母大寫,而不是全部。以下是我有:僅字符串首字母大寫java

import org.apache.commons.lang.WordUtils; 

public class FirstCapitalLetter { 


    public static void main(String[] args) { 
     String str = "STATEMENT OF ACCOUNT FOR THE PERIOD OF"; 
     str = WordUtils.capitalizeFully(str); 
     System.out.println(str); 

    } 
} 

我的輸出是:

Statement Of Account For The Period Of 

我希望我的輸出是

Statement of Account for the Period of 

我怎樣才能做到這一點?

+0

這是所有leters和我已經這樣做,正如我已經說過。 – ErrorNotFoundException

+0

我懷疑你可以用WordUtils來做到這一點。你將不得不編寫你自己的方法,並保留你不希望它們大寫的單詞列表。 –

+0

我不認爲有任何現成的實用工具;但是,如果您確定這總是會出現這種模式,那麼您可以使用大寫,然後使用替換函數替換(賬戶)(賬戶)和(期間)(期間)。 – Scorpion

回答

2

1)創建一組字符串,你不希望利用工作(一組的例外):

Set<String> doNotCapitalize = new HashSet<>(); 
doNotCapitalize.add("the"); 
doNotCapitalize.add("of"); 
doNotCapitalize.add("for"); 
... 

2)分割由空格

String[] words = "STATEMENT OF ACCOUNT FOR THE PERIOD OF".split(" "); 

3字符串)通過陣列迭代,大寫僅不在集合E的那些字xceptions:

StringBuilder builder = new StringBuilder(); 
for(String word : words){ 
    String lower = word.toLowerCase(); 
    if(doNotCapitalize.contains(lower){ 
      builder.append(lower).append(" "); 
    } 
    else{ 
      builder.append(WordUtils.capitalizeFully(lower)).append(" "); 
    } 
} 
String finalString = builder.toString(); 
0

ü需要打破串在三個部分
1.爲
3期
2.會計報表。

+0

我正在從文件讀取該字符串作爲一個字符串。 – ErrorNotFoundException

1

運行WordUtils.capitalizeFully在您的字符串每個字僅當它的長度超過3更長的時間,這將在這種特殊情況下