如何在Android应用程序的TextView中大写字母的首字母


89

我也不是指textInput。我的意思是,一旦您在TextView中拥有静态文本(从数据库调用填充到用户输入的数据(可能未大写)),如何确保它们大写?

谢谢!


2
对于未来的访客...在Kotlin中,只需使用“ abcd” .capitalize())
阿米特·

Answers:


181

我应该能够通过标准的Java字符串操作来完成此操作,而无需特定于Android或TextView。

就像是:

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

尽管可能有上百万种方法可以做到这一点。请参阅字符串文档。

编辑 我添加了.toLowerCase()


12
只是要注意,这对于英语是一个很好的解决方案,但对本地化不友好。
比利·拉扎罗

70

以下内容不适用于TextView,但可用于EditText。即使这样,它也适用于从键盘输入的文本,而不适用于用setText()加载的文本。更具体地说,它会在键盘上打开Caps,用户可以随意改写。

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()加载的文本。更具体地说,它会在键盘上打开Caps,用户可以随意改写。
亚历克斯·科恩

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大脑

输入/ Brain and Health 输出 Brain And Health

从I / P brain And healthO / P Brain And Health

从I / P brain's HealthO / P Brain's Health

从I / P brain's Health and legO / 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元素出现在“活动/片段设计”中?
Kostanos '19

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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.