114

文字列を Title Case 形式に変換する組み込みメソッドはありますか?

4

21 に答える 21

118

Apache Commons StringUtils.capitalize() or Commons Text WordUtils.capitalize()

e.g: WordUtils.capitalize("i am FINE") = "I Am FINE" from WordUtils doc

于 2009-07-06T09:09:50.550 に答える
65

Java の String クラスには、capitalize() または titleCase() メソッドはありません。次の 2 つの選択肢があります。

 StringUtils.capitalize(null)  = null
 StringUtils.capitalize("")    = ""
 StringUtils.capitalize("cat") = "Cat"
 StringUtils.capitalize("cAt") = "CAt"
 StringUtils.capitalize("'cat'") = "'cat'"
  • (さらに別の) 静的ヘルパー メソッド toTitleCase() を書き込む

実装例

public static String toTitleCase(String input) {
    StringBuilder titleCase = new StringBuilder(input.length());
    boolean nextTitleCase = true;

    for (char c : input.toCharArray()) {
        if (Character.isSpaceChar(c)) {
            nextTitleCase = true;
        } else if (nextTitleCase) {
            c = Character.toTitleCase(c);
            nextTitleCase = false;
        }

        titleCase.append(c);
    }

    return titleCase.toString();
}

テストケース

    System.out.println(toTitleCase("string"));
    System.out.println(toTitleCase("another string"));
    System.out.println(toTitleCase("YET ANOTHER STRING"));

出力:

弦
別の文字列
まだ別の文字列
于 2009-07-06T09:09:18.477 に答える
41

解決策に関する私の意見を提出できれば...

次の方法は、dfa が投稿したものに基づいています。次の大きな変更を行います (これは、当時私が必要としていたソリューションに適しています): 入力文字列のすべての文字を強制的に小文字にしますが、その直前に「実用的な区切り文字」が続く場合を除きます。大文字。

私のルーチンの主な制限は、「タイトルの大文字と小文字」がすべてのロケールで一様に定義され、私が使用したのと同じ大文字と小文字の規則で表されると仮定しているため、その点で dfa のコードよりも役に立たないことです。

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();
}

テスト値

文字列

マーティン・オマリー

ジョン・ウィルクス・ブース

まだ別の文字列

出力

文字列

マーティン・オマリー

ジョン・ウィルクスブース

まだ別の文字列

于 2013-04-01T06:03:12.400 に答える
21

Apache Commons のWordUtils.capitalizeFully()を使用します。

WordUtils.capitalizeFully(null)        = null
WordUtils.capitalizeFully("")          = ""
WordUtils.capitalizeFully("i am FINE") = "I Am Fine"
于 2013-08-06T02:20:34.507 に答える
10

次のように apache commons lang を使用できます。

WordUtils.capitalizeFully("this is a text to be capitalize")

ここで Java ドキュメントを見つけることができます: WordUtils.capitalizeFully Java ドキュメント

世界の間のスペースを削除したい場合は、次を使用できます。

StringUtils.remove(WordUtils.capitalizeFully("this is a text to be capitalize")," ")

String StringUtils.remove Java docの Java ドキュメントを見つけることができます

この助けを願っています。

于 2015-08-24T11:19:11.493 に答える
3

これは、snake_case を lowerCamelCase に変換するために私が書いたものですが、要件に基づいて簡単に調整できます

private String convertToLowerCamel(String startingText)
{
    String[] parts = startingText.split("_");
    return parts[0].toLowerCase() + Arrays.stream(parts)
                    .skip(1)
                    .map(part -> part.substring(0, 1).toUpperCase() + part.substring(1).toLowerCase())
                    .collect(Collectors.joining());
}
于 2016-04-14T11:15:52.180 に答える
1

これは古いものであることは知っていますが、簡単な答えはありません。コーディングにこの方法が必要だったので、ここに追加しました。使いやすいです。

public static String toTitleCase(String input) {
    input = input.toLowerCase();
    char c =  input.charAt(0);
    String s = new String("" + c);
    String f = s.toUpperCase();
    return f + input.substring(1);
}
于 2015-11-21T14:11:43.473 に答える
1

このメソッドを使用して、文字列をタイトル ケースに変換します。

static String toTitleCase(String word) {
    return Stream.of(word.split(" "))
            .map(w -> w.toUpperCase().charAt(0)+ w.toLowerCase().substring(1))
            .reduce((s, s2) -> s + " " + s2).orElse("");
}
于 2019-06-04T14:17:04.137 に答える
0

あなたはとてもうまく使うことができます

org.apache.commons.lang.WordUtils

また

ケースフォーマット

Google の API から。

于 2016-03-31T21:03:19.350 に答える
-2

文字列をタイトルケースに変換する最も簡単な方法は、googles パッケージ org.apache.commons.lang.WordUtils を使用することです。

System.out.println(WordUtils.capitalizeFully("tHis will BE MY EXAMple"));

この結果になります

これは私の例です

「capitalizeFully」という名前が付けられた理由はわかりません。実際、関数は完全な大文字の結果を実行していませんが、とにかく、それが必要なツールです。

于 2015-08-21T14:52:09.520 に答える
-3

申し訳ありませんが、私は初心者なので、コーディングの習慣は最悪です!

public class TitleCase {

    String title(String sent)
    {   
        sent =sent.trim();
        sent = sent.toLowerCase();
        String[] str1=new String[sent.length()];
        for(int k=0;k<=str1.length-1;k++){
            str1[k]=sent.charAt(k)+"";
    }

        for(int i=0;i<=sent.length()-1;i++){
            if(i==0){
                String s= sent.charAt(i)+"";
                str1[i]=s.toUpperCase();
                }
            if(str1[i].equals(" ")){
                String s= sent.charAt(i+1)+"";
                str1[i+1]=s.toUpperCase();
                }

            System.out.print(str1[i]);
            }

        return "";
        }

    public static void main(String[] args) {
        TitleCase a = new TitleCase();
        System.out.println(a.title("   enter your Statement!"));
    }
}
于 2014-08-14T13:30:58.780 に答える