2017-04-17 53 views
0

我想限制用户以编程方式输入特殊字符&空间。 下面是我在按下空格键就删除最后一个字符代码以编程方式限制特殊字符和空格

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

。根据您的要求,如

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 ""; 
      } 
     }; 
    } 

在这里如果你只是改变相匹配的字符串:

+0

请问您可以澄清什么是您的edittext可接受的输入是(a-z A-Z 0-9)还是有些别的 –

回答

-1

最后我已经在代码

mEditText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 

添加以下线这条线将不显示键盘上的建议解决这个问题。

0

你可以做到这样。避免与字母数字空间然后它应该是这样的:[a-zA-Z0-9] +。

希望它可以帮助你!

+0

特殊字符呢? – MohsinSyd

+0

@MohsinSyd如果你看到代码匹配字符串是你想要支持的字符串。特殊字符已经避免了bcoz在匹配字符串中没有特殊字符。 –

+0

它允许我输入空格 – MohsinSyd

0
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}); 
+0

不适合我。 – MohsinSyd

0

使用此代码来过滤你的EditText

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

现在这个过滤器适用于您的EditText。

yourEditText.setFilters(new InputFilter[] { filter }); 
相关问题