В Custom TextView предположим, что если первый символ является числом, то следующий символ будет символом. Как найти первый символ среди чисел.
Как сделать первую букву заглавной в пользовательском текстовом представлении?
Ответы (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...
В макете XML добавьте android:capitalize="sentences"
Варианты для android:capitalize следующие:
android:capitalize="none" : что ничего не будет делаться автоматически.
android:capitalize="sentences" : первое слово каждого предложения будет заглавным.
android:capitalize="words" : первая буква каждого слова будет заглавной.
android:capitalize="characters" : каждый символ будет заглавным.
Обновление:
Поскольку android:capitalize устарел, теперь необходимо использовать:
Android:inputType="textCapWords"
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);
Вывод: предложение
Вы ищете параметр 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();
Надеюсь это поможет :)
Используйте эту функцию, передайте свою строку и верните строку с заглавными буквами.
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;
}