Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 限制特殊字符&;空间编程_Android_Android Edittext_Android Input Filter - Fatal编程技术网

Android 限制特殊字符&;空间编程

Android 限制特殊字符&;空间编程,android,android-edittext,android-input-filter,Android,Android Edittext,Android Input Filter,我想限制用户以编程方式输入特殊字符和空格。 下面是我的代码 InputFilter[] alphaNumericFilter = new InputFilter[2]; alphaNumericFilter[0] = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned des

我想限制用户以编程方式输入特殊字符和空格。 下面是我的代码

InputFilter[] alphaNumericFilter = new InputFilter[2];
        alphaNumericFilter[0] = new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                for (int k = start; k < end; k++) {
                    boolean isLetterOrDigit = Character.isLetterOrDigit(source.charAt(k));
                    boolean isSpaceChar = Character.isSpaceChar(source.charAt(k));
                    if ((source.length() > 0 && isSpaceChar) ||
                            (!isLetterOrDigit && !isSpaceChar) ||
                            (isSpaceChar && TextUtils.isEmpty(dest))) {
                        return "";
                    }
                }
                return null;
            }
        };
InputFilter[]alphaNumericFilter=新的InputFilter[2];
alphaNumericFilter[0]=新的InputFilter(){
@凌驾
公共CharSequence筛选器(CharSequence源、int开始、int结束、跨区目标、int开始、int结束){
for(int k=start;k0&&isSpaceChar)||
(!IsleterOrdigit&&!isSpaceChar)||
(isSpaceChar&&TextUtils.isEmpty(dest))){
返回“”;
}
}
返回null;
}
};
按空格键删除最后一个字符。

您可以这样做:

public static InputFilter getAlphaNumericInputFilter(){
        return new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end,
                                       Spanned dest, int dstart, int dend) {

                if(source.equals("")){ // for backspace
                    return source;
                }
                if(source.toString().matches("[a-zA-Z0-9 ]+")){
                    return source;
                }
                return "";
            }
        };
    }
在这里,如果您可以根据您的要求更改匹配字符串,例如,避免使用字母数字空格,那么它应该是这样的:[a-zA-Z0-9]+

希望它能帮助你

InputFilter alphaNumericFilter=新建InputFilter(){
InputFilter alphaNumericFilter = new InputFilter() {   
     @Override  
     public CharSequence filter(CharSequence arg0, int arg1, int arg2, Spanned arg3, int arg4, int arg5)  
     {  
         for (int k = arg1; k < arg2; k++) {   
             if (!Character.isLetterOrDigit(arg0.charAt(k))) {   
             return ""; 
             }  
         }
         return null;
     }  
 };   
 mFirstName.setFilters(new InputFilter[]{ alphaNumericFilter});   
@凌驾 公共字符序列筛选器(字符序列arg0、int arg1、int arg2、跨距arg3、int arg4、int arg5) { 对于(int k=arg1;k
使用此代码过滤编辑文本

 private String yourCharacterThatYouWantToBlock= " ~#^|$%&*!";

        private InputFilter filter = new InputFilter() {

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

                if (source != null && yourCharacterThatYouWantToBlock.contains(("" + source))) {
                    return "";
                }
                return null;
            }
        };
现在将此筛选器应用于您的编辑文本


最后,我通过在代码中添加以下行解决了这个问题

mEditText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

这一行不会显示键盘上的建议。

特殊字符如何?@MohsinSyd如果您看到代码匹配字符串,则该字符串是您希望支持的字符串。特殊字符已被避免,因为匹配字符串中没有特殊字符。它允许我输入space@MohsinSyd按我上面的代码使用。它将允许字母数字字符串的空格。@MohsinSyd我读了你的问题,如果我答对了,那么你想限制用户输入的所有特殊字符和空格,因此,我编辑了我的答案,请现在检查。您能澄清一下,您的编辑文本的可接受输入是什么吗?它只是(a-z a-z 0-9)还是其他
mEditText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);