android忽略特殊字符输入

时间:2013-04-23 17:02:57

标签: android character ignore

任何Android专家都可以帮助使用输入过滤器来忽略字符-吗?

我为此设置了一个类,但所有字符都被忽略了.....

public class InputFilterReservedCharacters implements InputFilter {

    @Override
    public CharSequence filter(CharSequence source, int start, int end,
        Spanned dest, int dstart, int dend) {
        try {
        if (end > start) {
            for (int index = start; index < end; index++) {
                if (source.charAt(index) == "-".toCharArray()[0]) {
                    return "";
                }
            }
        }
        } catch (NumberFormatException nfe) {
        }
        return "";
    }
}

感谢StoneBird提供的有用评论,我希望用户输入除“ - ”之外的任何内容。我这样做了:

@Override
public CharSequence filter(CharSequence source, int start, int end,
        Spanned dest, int dstart, int dend) {

    String returnValue = "";

    try {
        if (end > start) {
            for (int index = start; index < end; index++) {
                if (source.charAt(index) != '-'){
                    returnValue = Character.toString(source.charAt(index));
                }
            }
        }
    } catch (NumberFormatException nfe) {
    }
    return returnValue;
}

1 个答案:

答案 0 :(得分:0)

您的代码if (source.charAt(index) == "-".toCharArray()[0]) {return "";}表示如果函数找到-,则函数将返回""作为结果,从而结束此函数的执行。这就是为什么你每次都得到空结果,因为过滤器正在工作并做你想要的返回。 尝试在函数中创建一个空字符串,将所有“有用”字符连接到该字符串,然后返回该字符串。

public class InputFilterReservedCharacters implements InputFilter {

@Override
public CharSequence filter(CharSequence source, int start, int end,
    Spanned dest, int dstart, int dend) {
    private CharSequence result = ""; //change here
    try {
    if (end > start) {
        for (int index = start; index < end; index++) {
            if (source.charAt(index) != "-".toCharArray()[0]) { //change here
                result+=source.charAt(index);
            }
        }
    }
    } catch (NumberFormatException nfe) {
    }
    return result; //and here
}
}

另外我相信使用'-'而不是双引号会给你一个char,所以你不需要将它转换为char数组。