Я уже использовал следующие параметры, чтобы сделать каждую стартовую букву слова "Верхний регистр"
<EditText
android:inputType="text|textCapWords"/>
При вводе пользовательской опции на клавиатуре можно изменить регистр букв i.e, пользователь с этой опцией может легко напечатать буквы lowercase
.
Кроме того, я хочу, чтобы текст на моем EditText
находился в этом формате
Each Starting Letter Of A Word Must Be In Uppercase And All Other Letter Of The Word Be In Lowercase
.
Значение, когда пользователь вводит
Each Starting Letter Of A Word Must Be In Uppercase And All Other Letter Of The Word Be In Lowercase
он будет автоматически преобразован в формат выше.
Я попытался использовать TextWatcher
и string.split(\\s+)
, чтобы получить все слова, а затем сделать каждое слово, чтобы следовать указанному выше формату. Но я всегда получаю ошибку.
Поэтому, если есть какое-либо решение, это было бы здорово. Я хочу, чтобы это работало так: InputFilter.AllCaps
.
Это мой код до сих пор
private void changeToUpperCase(String inputString) {
if (inputString != null && inputString.trim().length() > 0) {
// businessName.addTextChangedListener(null);
String[] splitString = inputString.split("\\s+");
int length = splitString.length;
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < length; i++) {
String convertedString = splitString[i];
stringBuffer.append(Character.toUpperCase(convertedString
.charAt(0)));
stringBuffer.append(convertedString.substring(1).toLowerCase());
stringBuffer.append(" ");
}
Log.i("changed String", stringBuffer.toString());
// businessName.setText(stringBuffer.toString());
stringBuffer.delete(0, stringBuffer.length());
stringBuffer = null;
// businessName.addTextChangedListener(this);
}
}
Эта функция я вызываю от TextWatcher
, afterTextChanged(Editable s)