如何在Android应用程序的TextView中大写文本的第一个字母

时间:2010-08-05 21:55:18

标签: android xml

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

谢谢!

14 个答案:

答案 0 :(得分:138)

我应该能够通过标准的java字符串操作来实现这一点,没有特定的Android或TextView。

类似的东西:

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

虽然可能有一百万种方法可以实现这一目标。请参阅String文档。

答案 1 :(得分:60)

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

答案 2 :(得分:17)

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

答案 3 :(得分:6)

您可以添加Apache Commons Lang 在Gradle中,如compile 'org.apache.commons:commons-lang3:3.4'

并使用WordUtils.capitalizeFully(name)

答案 4 :(得分:2)

对于将来的访问者,您还可以(最好的恕我直许)从WordUtil导入Apache并为您的应用添加许多有用的方法,例如capitalize,如下所示:

How to capitalize the first character of each word in a string

答案 5 :(得分:2)

对于Kotlin,如果要确保格式为“ Aaaaaaaaa”,则可以使用:

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

答案 6 :(得分: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);
    }
}

答案 7 :(得分:1)

对我来说,没有工作:

<强>功能:

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

希望这会对你有所帮助。

答案 8 :(得分:1)

对于Kotlin,只需致电

textview.text = string.capitalize()

答案 9 :(得分:0)

可接受的答案很好,但是如果您使用它从android中的textView获取值,则最好检查字符串是否为空。如果字符串为空,则将引发异常。

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

答案 10 :(得分:0)

由于我们有多个选择,Capitalize First Letter of String in 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"

答案 11 :(得分:0)

对于使用 Jetpack Compose 的用户,您应该使用 Compose 的 String.capitalize(locale: Locale),而不是 Kotlin 的,如下所示:

import androidx.compose.ui.text.capitalize
import androidx.compose.ui.text.intl.Locale
    
Text("my text".capitalize(Locale.current)) // capitalizes first letter
Text("my text".toUpperCase(Locale.current)) // all caps

答案 12 :(得分:0)

请注意 Kotlin 的 .capitalize() is deprecated as of 1.5,因为它不是语言环境友好的。建议使用 .replaceFirstChar()

Android Studio 警告我

<块引用>

隐式使用默认语言环境是错误的常见来源:请改用大写(语言环境)。对于内部使用的字符串,使用 Locale.ROOT,否则使用 Locale.getDefault()。

感谢内置的autofix,我做了这个扩展功能

fun String.titlecase(): String =
    this.replaceFirstChar { // it: Char
        if (it.isLowerCase())
            it.titlecase(Locale.getDefault())
        else
            it.toString()
    }

答案 13 :(得分:0)

添加 Kotlin 扩展

fun String.firstCap()=this.replaceFirstChar { it.uppercase() }

用例

"lowercase letter".firstCap() //gives "Lowercase letter"