Java 在android中输入文本字段时替换字符串

Java 在android中输入文本字段时替换字符串,java,android,Java,Android,在EditText中输入字符串时,例如“Love Is Life”,在输入单词“Love”后输入空格,然后在单击字母“i”后,它会自动将其更改为大写字母“i” 这意味着字符串的每个空格后面的字符都需要大写,并且在EditText中输入字符时动态地进行更改,以模拟大小写格式 如果有人知道我的意思,请帮我 谢谢。您需要为字段实现a并收听空格,在空格后您需要将用户输入的字符更改为大写您需要为字段实现a并收听空格,在空格后您需要将用户输入的字符更改为大写您可以按照,如果etitText.getText.

在EditText中输入字符串时,例如“Love Is Life”,在输入单词“Love”后输入空格,然后在单击字母“i”后,它会自动将其更改为大写字母“i”

这意味着字符串的每个空格后面的字符都需要大写,并且在EditText中输入字符时动态地进行更改,以模拟大小写格式

如果有人知道我的意思,请帮我


谢谢。

您需要为字段实现a并收听空格,在空格后您需要将用户输入的字符更改为大写

您需要为字段实现a并收听空格,在空格后您需要将用户输入的字符更改为大写

您可以按照,如果etitText.getText.toString.trim.length-1==''以后设置caps中的cha,则在键下函数上执行此操作。

如果etitText.getText.toString.trim.length-1=''以后设置caps中的cha,则在键下函数上执行此操作。

您可以向
编辑文本添加文本,并在每次通知文本时收到通知。使用它,您只需解析字符串以查找空格后的字符,并将其更新为大写

下面是我做的一个快速测试,它运行得非常好(远不是最佳的,因为每次编辑可编辑文件时,它都会再次调用侦听器…)

editText.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
//TODO自动生成的方法存根
}
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
//TODO自动生成的方法存根
}
@凌驾
公共无效后文本已更改(可编辑){
String String=s.toString();
int指数=-1;
而(((index=string.indexOf(“”,index+1))!=-1)和(&(index+1
为了避免经常被调用,您可以在
char[]
中进行所有更改,并且只有在进行更改时才提交到
可编辑的

一个更简单的解决方案可能是只在字符串上使用
split(“”)
,将
字符串[]
中的所有首字母替换为大写版本(如果需要),并且只提交一次到
可编辑的


一个更简单的优化方法是向匿名类中添加一个布尔值,当您输入afterTextChanged时将其设置为try,当您退出它时将其设置为false,并且仅当布尔值为false时才处理该字符串

您可以在
EditText
中添加一个TextWatcher,并在每次通知文本时收到通知。使用它,您只需解析字符串以查找空格后的字符,并将其更新为大写

下面是我做的一个快速测试,它运行得非常好(远不是最佳的,因为每次编辑可编辑文件时,它都会再次调用侦听器…)

editText.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
//TODO自动生成的方法存根
}
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
//TODO自动生成的方法存根
}
@凌驾
公共无效后文本已更改(可编辑){
String String=s.toString();
int指数=-1;
而(((index=string.indexOf(“”,index+1))!=-1)和(&(index+1
为了避免经常被调用,您可以在
char[]
中进行所有更改,并且只有在进行更改时才提交到
可编辑的

一个更简单的解决方案可能是只在字符串上使用
split(“”)
,将
字符串[]
中的所有首字母替换为大写版本(如果需要),并且只提交一次到
可编辑的


一个更简单的优化方法是向匿名类中添加一个布尔值,当您输入afterTextChanged时将其设置为try,当您退出它时将其设置为false,并且仅当布尔值为false时才处理该字符串

我知道这是一个古老的故事,我在寻找同样的东西时偶然发现了它,并找到了完美的方法,所以我想我会分享给任何一个偶然发现这条线索的人。您可以使用
android:inputType=“textCapWords



这样做将导致
EditText
控件使每个单词都以大写字母开头,包括用户自己将其改为小写并转到下一个单词时!

我知道这很旧,我偶然发现它在寻找同样的东西,并找到了完美的方法,所以我想我会为任何人分享它您可以使用
android:inputType=“textCapWords


这样做将导致
EditText
控件使每个单词都以大写字母开头,包括用户将其更改为小写并转到下一个单词

    editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            String string = s.toString();
            int index = -1;
            while (((index = string.indexOf(' ', index + 1)) != -1) && (index + 1 < string.length())) {
                // Get character
                char c = string.charAt(index + 1);
                if (Character.isLowerCase(c)) {

                    // Replace in editable by uppercase version
                    s.replace(index+1, index + 2, Character.toString(c).toUpperCase());
                }
            }
        }
    });