Как сделать первую букву заглавной в пользовательском текстовом представлении?

В Custom TextView предположим, что если первый символ является числом, то следующий символ будет символом. Как найти первый символ среди чисел.


person Dhivyaseetha_Kumba    schedule 19.08.2016    source источник
comment
Возможный дубликат Java: найти индекс первого регулярного выражения   -  person N J    schedule 19.08.2016


Ответы (5)


Если вы используете Kotlin, вы можете выбрать:

Сделать первое слово заглавным:

var str = "whaever your string is..."
str.capitalize()
// Whaever your string is...

Делайте каждое слово заглавным

var str = "whaever your string is..."
val space = " "
val splitedStr = str.split(space)
str = splitedStr.joinToString (space){
    it.capitalize()
}
// Whaever Your String Is...
person Jocky Doe    schedule 25.01.2018

В макете XML добавьте android:capitalize="sentences"

Варианты для android:capitalize следующие:

android:capitalize="none" : что ничего не будет делаться автоматически.

android:capitalize="sentences" : первое слово каждого предложения будет заглавным.

android:capitalize="words" : первая буква каждого слова будет заглавной.

android:capitalize="characters" : каждый символ будет заглавным.

Обновление:

Поскольку android:capitalize устарел, теперь необходимо использовать:

Android:inputType="textCapWords"

person Riyaz Parasara    schedule 19.08.2016
comment
android:inputType="..." не влияет на TextView, только на EditText, когда вы вводите текст с клавиатуры. - person Abushawish; 05.07.2018

Попробуйте этот метод, разделив все слово

String input= "sentence";
String output = input.substring(0, 1).toUpperCase() + input.substring(1);
textview.setText(output);

Вывод: предложение

person Ajay Venugopal    schedule 31.10.2017

Вы ищете параметр inputType в файле макета xml для TextView. В основном в файле макета, где вы хотите установить TextView в случае верблюда, добавьте следующую строку:

android:inputType = "textCapWords"
//This would capitalise the first letter in every word.

Если вы хотите использовать только первую букву в TextView, используйте вместо этого следующее.

android:inputType = "textCapSentences"
//This would capitalise the first letter in every sentence.

Если у вас есть textView, который имеет более одного предложения, и вы хотите использовать только первую букву в TextView, я бы рекомендовал использовать для этого код:

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

Надеюсь это поможет :)

person Michele La Ferla    schedule 19.08.2016

Используйте эту функцию, передайте свою строку и верните строку с заглавными буквами.

public static String wordCapitalize(String words)
{

    String str = "";
    boolean isCap = false;

    for(int i = 0; i < words.length(); i++){

        if(isCap){
            str +=  words.toUpperCase().charAt(i);
        }else{
            if(i==0){
                str +=  words.toUpperCase().charAt(i);
            }else {
                str += words.toLowerCase().charAt(i);
            }
        }

        if(words.charAt(i)==' '){
            Utility.debug(1,TAG,"Value of  i : "+i+" : "+words.charAt(i)+" : true");
            isCap = true;
        }else{
            Utility.debug(1,TAG,"Value of  i : "+i+" : "+words.charAt(i)+" : false");
            isCap = false;
        }
    }
    Utility.debug(1,TAG,"Result : "+str);
    return str;
}
person Ram Kishore Prajapati    schedule 15.03.2018