AndroidアプリケーションのTextViewでテキストの最初の文字を大文字にする方法


89

textInputについても言及していません。TextViewに静的テキスト(ユーザーが入力したデータへのデータベース呼び出しから入力された(大文字ではない可能性があります))がある場合、それらが大文字になっていることを確認するにはどうすればよいですか?

ありがとう!


2
将来の訪問者のために... Kotlinでは「abcd」.capitalize())を使用してください
Amit

回答:


181

これは、AndroidやTextViewに固有のものではなく、標準のJava文字列操作で実現できるはずです。

何かのようなもの:

String upperString = myString.substring(0, 1).toUpperCase() + myString.substring(1).toLowerCase();

これを達成する方法はおそらく百万通りありますが。文字列のドキュメントを参照してください。

編集済み 私は追加しました.toLowerCase()


12
これは英語には適したソリューションですが、ローカリゼーションに適したソリューションではないことに注意してください。
ビリーラザロ2016年

70

以下はTextViewには適用されませんが、EditTextでは機能します。それでも、setText()でロードされたテキストではなく、キーボードから入力されたテキストに適用されます。具体的には、キーボードのキャップをオンにし、ユーザーは自由にこれを上書きできます。

android:inputType="textCapSentences"

または

TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

これにより、最初の文字が大文字になります。

または

compile 'org.apache.commons:commons-lang3:3.4' //in build.gradle module(app)

tv.setText(StringUtils.capitalize(myString.toLowerCase().trim()));

79
これはTextViewには適用されませんが、EditTextにのみ適用されます。それでも、setText()でロードされたテキストではなく、キーボードから入力されたテキストに適用されます。具体的には、キーボードのキャップをオンにし、ユーザーは自由にこれを上書きできます。
Alex Cohn 2015

28
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));  
return sb.toString();

20

Kotlinの場合は、

textview.text = string.capitalize()

3
私はそれが各単語を大文字にするだろうと思ったでしょうが、それは確かに最初の単語に対してのみ機能しています。
Skoua

多言語アプリでこれを使用している場合は、ロケールを渡すと改善されます。
Dharmendra Pratap Singh



2

私にとっては何も働いていません:

関数:

private String getCapsSentences(String tagName) {
    String[] splits = tagName.toLowerCase().split(" ");
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < splits.length; i++) {
        String eachWord = splits[i];
        if (i > 0 && eachWord.length() > 0) {
            sb.append(" ");
        }
        String cap = eachWord.substring(0, 1).toUpperCase() 
                + eachWord.substring(1);
        sb.append(cap);
    }
    return sb.toString();
}

結果:

I / P brain O / P

I / P Brain and Health O / P Brain And Health

I / P brain And healthからO / P Brain And Health

I / P brain's HealthからO / P Brain's Health

I / P brain's Health and legからO / P Brain's Health And Leg

これがお役に立てば幸いです。


2

受け入れられた答えは良いですが、AndroidのtextViewから値を取得するためにそれを使用している場合は、文字列が空かどうかを確認することをお勧めします。文字列が空の場合、例外がスローされます。

private String capitizeString(String name){
    String captilizedString="";
    if(!name.trim().equals("")){
       captilizedString = name.substring(0,1).toUpperCase() + name.substring(1);
    }
    return captilizedString;
}

2

Kotlinの場合、形式が「Aaaaaaaaa」であることを確認したい場合は、次を使用できます。

myString.toLowerCase(Locale.getDefault()).capitalize()

1

カスタムTextViewを作成して使用してください:

public class CustomTextView extends TextView {

    public CapitalizedTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        if (text.length() > 0) {
            text = String.valueOf(text.charAt(0)).toUpperCase() + text.subSequence(1, text.length());
        }
        super.setText(text, type);
    }
}

このCustomTextViewをドラッグアンドドロップUI要素としてアクティビティ/フラグメントのデザインに表示するにはどうすればよいですか?
コスタノス

0

ここでは、いくつかのオプションがあるため、このトピックに関する詳細な記事を書きました。Androidで最初の文字列を大文字にする

Javaで文字列の最初の文字を大文字にする方法

public static String capitalizeString(String str) {
        String retStr = str;
        try { // We can face index out of bound exception if the string is null
            retStr = str.substring(0, 1).toUpperCase() + str.substring(1);
        }catch (Exception e){}
        return retStr;
}

Kotlinで文字列の最初の文字を大文字にする方法

fun capitalizeString(str: String): String {
        var retStr = str
        try { // We can face index out of bound exception if the string is null
            retStr = str.substring(0, 1).toUpperCase() + str.substring(1)
        } catch (e: Exception) {
        }
        return retStr
}

XML属性の使用

または、この属性をTextViewまたはXMLのEditTextで設定できます

android:inputType="textCapSentences"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.