我想大写EditText
中onTextChanged
中键入的每个单词。我已经尝试了一些解决方案,但没有一个起作用。问题是,如果您在键盘上更改大写字母,然后键入James JoNEs
,则在将E
字符键入Jone
后,它应该修复该String以更正格式。这不适用于默认的android:inputType="textCapWords"
。我已经使用了一些发现的功能,但是根本无法使用。
fun onFieldChanged(s: String, tv: TextWatcher, et: EditText) {
et.removeTextChangedListener(tv)
val changedString = capitalizeFirstLetterWord(s)
with(et) {
text.clear()
append(changedString)
setSelection(changedString.length)
}
et.addTextChangedListener(tv)
}
fun capitalizeFirstLetterWord(s: String): String{
var finalStr = ""
if(s != "") {
val strArray = s.split("[\\s']")
if (strArray.isNotEmpty()) {
for(i in strArray.indices){
finalStr+= capitalize(strArray[i])
}
}
}
return finalStr
}
答案 0 :(得分:3)
您可以尝试通过类似这样的方式实现
"yourString".split(" ").map { it.toLowerCase().capitalize() }.joinToString(" ")
答案 1 :(得分:1)