Как изменить Первую букву каждого слова в верхнем регистре в 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/...
- Нажмите значок "Настройки на главном экране вашего Android-устройства Lollipop"
- На экране "Настройки" прокрутите страницу вниз до раздела ПЕРСОНАЛЬНЫЙ и коснитесь раздела "Язык и ввод".
- В разделе "Язык и ввод" выберите свою клавиатуру (которая отмечена как текущая клавиатура).
- Теперь нажмите "Настройки".
- Нажмите, чтобы проверить "Авто-Капитализация", чтобы включить его.
И тогда это должно сработать.
Если бы это не так, я бы предпочел сделать это на Java
.
Ответ 8
fooobar.com/questions/20220/...
Посмотрите на ACL WordUtils.
WordUtils.capitalize("ваша строка") == "Ваша строка"
Ответ 9
Если кто-то ищет способ kotlin
сделать это, тогда код становится очень простым и красивым.
yourTextView.text = yourText.split(' ').joinToString(" ") { it.capitalize() }
Ответ 10
Вы можете использовать
private String capitalize(final String line) {
return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}
см. это Как загладить первый символ каждого слова в строке
Ответ 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"