2017-04-17 81 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 }); 
相關問題