-1

私はApache WordUtilsを使用して文字列の最初の文字をすべて大文字にしていますが、特定の単語の最初の文字だけを大文字にする必要があり、すべてを大文字にする必要はありません。ここに私が持っているものがあります:

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

どうすればこれを達成できますか?

4

3 に答える 3

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)配列を反復処理し、例外のセットに含まれていない単語のみを大文字にします。

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();
于 2012-12-13T07:57:25.270 に答える
1

長さが 3 より長い場合にのみ、文字列内の各単語に対して WordUtils.capitalizeFully を実行します。これは、この特定のケースで機能します。

于 2012-12-13T07:54:30.413 に答える
0

文字列を 3 つの部分に分割する必要があります。 1. 2
のステートメント 。

于 2012-12-13T07:52:55.907 に答える