如何使用TextWatcher检查特定字符串而不是仅检查一个字符?

时间:2012-04-07 21:25:09

标签: java android android-edittext textwatcher

我是Android和Java的新手。我的应用程序需要能够在键入用户时检查用户输入的内容。如果用户键入已被标记的预定单词,则在用户按下按钮之前需要发生事件。看起来最好的选择是TextWatcher和addChangedTextListener。我无法弄清楚如何检查一系列字符(一个单词)。例如,如果标记的单词是“非常”,则当用户输入“非常温暖”时。在edittext中,程序应该能够识别出“非常”被输入并以某种方式提醒用户。

我希望我能够在不使用任何代码的情况下明确这一点。任何可以给予的帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

这是通过 TextWatcher

进行此操作的最简单形式
String word = "very";

TextWatcher watcher = new TextWatcher() {
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }

    public void afterTextChanged(Editable s) {
        String tmp = s.toString().trim().toLowerCase();
        if(tmp.contains(word.toLowerCase())){
            //inform the user here
        }
    }
};

答案 1 :(得分:0)

我将只展示一个例子:

String word = "very";
int wordProgress = 0;

charTyped(char c) {
    if (c == word.charAt(wordProgress)) {
        wordProgress++;
        if (wordProgress >= word.length()) {
            AlertUserThatFlagWordWasTypedAndUseObjectiveCTypeMethodNamingSyntaxJustForFunBecauseIAmUsingObjectiveCAndIFindItQuiteAnoying(word);
        }
    }
}

这可能不是最好的方法,但它是最快,最有效的。如果您还在寻找插入符号位置更改和退格键,则必须对其进行修改。

一个更简单的版本也适用于退格和插入符号移动,但效率会低得多,就是每次用户输入内容时检查整个文本区域是否包含该单词。