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