Как изменить Первую букву каждого слова в верхнем регистре в Textview xml

Мне нужно изменить текст = "шрифт roboto regular" на Font Roboto Regular в xml, как это сделать?

<TextView
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:gravity="center"
   android:textSize="18sp"
   android:textColor="@android:color/black"
   android:fontFamily="roboto-regular"
   android:text="font roboto regular"
   android:inputType="textCapWords"
   android:capitalize="words"/>

Ответ 1

Вы можете использовать этот код.

String str = "font roboto regular";
String[] strArray = str.split(" ");
StringBuilder builder = new StringBuilder();
for (String s : strArray) {
     String cap = s.substring(0, 1).toUpperCase() + s.substring(1);
     builder.append(cap + " ");
}
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(builder.toString());

Ответ 2

Вы можете использовать

android:inputType="textCapSentences"
android:capitalize="sentences"

Если ваш текст является динамическим, тогда

KOTLIN

   val strArrayOBJ = "Your String".split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
                val builder = StringBuilder()
                for (s in strArrayOBJ) {
                    val cap = s.substring(0, 1).toUpperCase() + s.substring(1)
                    builder.append("$cap ")
                }
txt_OBJ.text=builder.toString()

Ответ 3

Попробуй это...

Метод, который преобразует первую букву каждого слова в строку в прописную букву.

 private String capitalize(String capString){
    StringBuffer capBuffer = new StringBuffer();
    Matcher capMatcher = Pattern.compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(capString);
    while (capMatcher.find()){
        capMatcher.appendReplacement(capBuffer, capMatcher.group(1).toUpperCase() + capMatcher.group(2).toLowerCase());
    }

    return capMatcher.appendTail(capBuffer).toString();
}

Применение:

String chars = capitalize("hello dream world");
//textView.setText(chars);
System.out.println("Output: "+chars);

Результат:

Output: Hello Dream World

Ответ 4

Модификация принятого ответа на очистку любых существующих заглавных букв и предотвращение отставания, в течение которого принятый ответ остается позади.

public static String capitalize(@NonNull String input) {

    String[] words = input.toLowerCase().split(" ");
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < words.length; i++) {
        String word = words[i];

        if (i > 0 && word.length() > 0) {
            builder.append(" ");
        }

        String cap = word.substring(0, 1).toUpperCase() + word.substring(1);
        builder.append(cap);
    }
    return builder.toString();
}

Ответ 5

вы можете использовать этот метод для его программного

public String wordFirstCap(String str)
{
    String[] words = str.trim().split(" ");
    StringBuilder ret = new StringBuilder();
    for(int i = 0; i < words.length; i++)
    {
        if(words[i].trim().length() > 0)
        {
            Log.e("words[i].trim",""+words[i].trim().charAt(0));
            ret.append(Character.toUpperCase(words[i].trim().charAt(0)));
            ret.append(words[i].trim().substring(1));
            if(i < words.length - 1) {
                ret.append(' ');
            }
        }
    }

    return ret.toString();
}

обратитесь к этому, если вы хотите сделать это в xml.

Ответ 6

android:inputType="textCapWords"

Это не будет работать в TextView, который действителен только для EditText. поэтому вам нужно сделать это вручную.

Вы можете использовать capitalizeFully, чтобы каждое слово начиналось с капитала.

Ответ 7

android:capitalize не рекомендуется.

Выполните следующие действия: fooobar.com/questions/621964/...

  1. Нажмите значок "Настройки на главном экране вашего Android-устройства Lollipop"
  2. На экране "Настройки" прокрутите страницу вниз до раздела ПЕРСОНАЛЬНЫЙ и коснитесь раздела "Язык и ввод".
  3. В разделе "Язык и ввод" выберите свою клавиатуру (которая отмечена как текущая клавиатура).
  4. Теперь нажмите "Настройки".
  5. Нажмите, чтобы проверить "Авто-Капитализация", чтобы включить его.

И тогда это должно сработать.

Если бы это не так, я бы предпочел сделать это на Java.

Ответ 8

fooobar.com/questions/20220/...

Посмотрите на ACL WordUtils.

WordUtils.capitalize("ваша строка") == "Ваша строка"

Ответ 9

Если кто-то ищет способ kotlin сделать это, тогда код становится очень простым и красивым.

yourTextView.text = yourText.split(' ').joinToString(" ") { it.capitalize() }

Ответ 11

Другой подход - использовать класс StringTokenizer. Метод ниже работает для любого количества слов в предложении или в представлении EditText. Я использовал это, чтобы загладить полное поле имен в приложении.

public String capWordFirstLetter(String fullname)
{
    String fname = "";
    String s2;
    StringTokenizer tokenizer = new StringTokenizer(fullname);
    while (tokenizer.hasMoreTokens())
    {
        s2 = tokenizer.nextToken().toLowerCase();
        if (fname.length() == 0)
            fname += s2.substring(0, 1).toUpperCase() + s2.substring(1);
        else
            fname += " "+s2.substring(0, 1).toUpperCase() + s2.substring(1);
    }

    return fname;
}

Ответ 12

использовать первую букву

android:inputType="textCapWords"

загладить первое слово предложения:

android:inputType="textCapSentences"

Ответ 13

Чтобы загладить каждое слово в предложении, используйте атрибут ниже в xml этого paticular textView.

андроид: inputType = "textCapWords"