25

高低を検索しましたが、このタイプの質問への間接的な参照しか見つかりませんでした. Android アプリケーションを開発するときに、ユーザーが入力した文字列がある場合、どのようにタイトル ケースに変換できますか (つまり、各単語の最初の文字を大文字にします)? ライブラリ全体 (Apache の WordUtils など) をインポートしたくありません。

4

14 に答える 14

17

あなたはApacheのWordUtils.capitalize()メソッドを探しています。

于 2012-09-12T11:50:19.577 に答える
16

私はここからいくつかのポインタを得ました: Android, リストビューで各単語の最初の文字を大文字にする必要がありますが、最終的には独自のソリューションを展開しました (注: このアプローチでは、すべての単語が単一のスペース文字で区切られていることを前提としています。私のニーズには問題ありませんでした):

String[] words = input.getText().toString().split(" ");
StringBuilder sb = new StringBuilder();
if (words[0].length() > 0) {
    sb.append(Character.toUpperCase(words[0].charAt(0)) + words[0].subSequence(1, words[0].length()).toString().toLowerCase());
    for (int i = 1; i < words.length; i++) {
        sb.append(" ");
        sb.append(Character.toUpperCase(words[i].charAt(0)) + words[i].subSequence(1, words[i].length()).toString().toLowerCase());
    }
}
String titleCaseValue = sb.toString();

...入力は EditText ビューです。いずれにせよ、デフォルトでタイトルケースになるように、ビューで入力タイプを設定することも役立ちます。

input.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
于 2012-09-12T11:47:51.043 に答える
13

これはあなたを助けます

EditText view = (EditText) find..
String txt = view.getText();
txt = String.valueOf(txt.charAt(0)).toUpperCase() + txt.substring(1, txt.length());
于 2012-09-12T12:29:40.220 に答える
4

私はちょうど同じ問題を抱えていて、これで解決しました:

import android.text.TextUtils;
...

String[] words = input.split("[.\\s]+");

for(int i = 0; i < words.length; i++) {
    words[i] = words[i].substring(0,1).toUpperCase()
               + words[i].substring(1).toLowerCase();
}

String titleCase = TextUtils.join(" ", words);

私の場合、ピリオドも削除する必要があることに注意してください。スペースに置き換える必要がある文字は、「分割」中に角括弧の間に挿入できます。たとえば、次のコードは、最終的にアンダースコア、ピリオド、コンマ、または空白を置き換えます。

String[] words = input.split("[_.,\\s]+");

もちろん、これは「単語以外の文字」記号を使用すると、はるかに簡単に実現できます。

String[] words = input.split("\\W+");

数字とハイフンは「単語の文字」と見なされることに言及する価値があるので、この最後のバージョンは私のニーズを完全に満たし、うまくいけば他の誰かを助けるでしょう.

于 2014-06-12T08:41:18.627 に答える