如何将 EditText 中的每个单词大写?
How to capitalize every word in EditText?
我想在 onTextChanged
中将 EditText
中输入的每个单词大写。我尝试了一些解决方案,但其中 none 行得通。我面临的问题是,如果您更改键盘上的大写字母并键入 James JoNEs
,它应该在您将 E
字符键入 Jone
后将该字符串修复为正确的形式。这不适用于默认 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
}
你可以尝试用这样的东西来实现
"yourString".split(" ").map { it.toLowerCase().capitalize() }.joinToString(" ")
我想在 onTextChanged
中将 EditText
中输入的每个单词大写。我尝试了一些解决方案,但其中 none 行得通。我面临的问题是,如果您更改键盘上的大写字母并键入 James JoNEs
,它应该在您将 E
字符键入 Jone
后将该字符串修复为正确的形式。这不适用于默认 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
}
你可以尝试用这样的东西来实现
"yourString".split(" ").map { it.toLowerCase().capitalize() }.joinToString(" ")