在android中输入textfield时替换String

时间:2011-07-22 07:06:44

标签: java android

在EditText中输入String,例如“Love Is Life”,输入单词“Love”后输入空格,然后点击字母'i'后自动将其改为大写字母'I'。

这意味着每个字符串空格后的字符必须为大写字母,并在EditText中输入字符时动态进行更改,以激发Camel案例格式。

如果有人知道意味着帮助我。

感谢。

4 个答案:

答案 0 :(得分:2)

您可以向EditText添加TextWatcher,并在每次通知文本时收到通知。使用它,您可以解析String以查找空格后的字符,并将它们更新为大写。

这是我做的快速测试,效果非常好(远非最佳,因为每次编辑Editable时,它都会再次调用侦听器......)。

    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());
                }
            }
        }
    });

为了避免经常被调用,您可以在char[]中进行所有更改,并且只有在进行了更改时才会提交到Editable

一个更简单的解决方案可能只是在你的String上使用split(' '),用大写版本替换String[]中的所有首字母(如果需要),并只提交一次{{1} }。

更简单的优化是向匿名类添加布尔值,将其设置为在输入afterTextChanged时尝试,在退出时将其设置为false,并且仅在布尔值为false时处理字符串。

答案 1 :(得分:1)

我知道这已经老了,我偶然发现它寻找同样的东西并找到了完美的方法,所以我想要分享给那些偶然发现这个问题的人。您可以使用EditText

android:inputType="textCapWords的布局XML中设置它
<EditText
    android:inputType="textCapWords" />

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

答案 2 :(得分:0)

你需要为字段实现TextWatcher并听取空格,在你需要更改用户输入的字符大小的空格后

答案 3 :(得分:0)

如果etitText.getText.toString.trim.length-1 ==''稍后设置cha,则可以在按键功能上执行此操作。