【问题标题】:How do I restrict my EditText input to alphabets for some length and remaing input to numerical and it should not allow special characters如何将我的 EditText 输入限制为字母一定长度,并将剩余输入限制为数字,并且它不应该允许特殊字符
【发布时间】:2016-05-30 20:24:04
【问题描述】:

如何将我的 EditText 输入限制为一定长度的字母并保持输入为数字,并且它不应允许特殊字符

为了限制我在代码下面使用的特殊字符

private void addFilterToUserName()
{

    editText.setFilters(new InputFilter[] {
            new InputFilter() {
                public CharSequence filter(CharSequence src, int start,
                                           int end, Spanned dst, int dstart, int dend) {
                    if(src.equals("")){ // for backspace
                        return src;
                    }
                    if(src.toString().matches("[a-zA-Z 0-9]+")){
                        return src;
                    }
                    return "";
                }
            }
    });
}

【问题讨论】:

  • 你可以使用 textwatcher 监听器或一些正则表达式
  • 您已经在使用正则表达式,但方法错误。你应该lear Regular Expressions

标签: android


【解决方案1】:
edittext.setInputType(InputType.TYPE_CLASS_TEXT);
    InputFilter filter = new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start, int end,
                                   Spanned dest, int dstart, int dend) {
            for (int i = start; i < end; i++) {
                if (!Character.isLetter(source.charAt(i))) {
                    return "";
                }
            }
            return null;
        }
    };
    edittext.setFilters(new InputFilter[]{filter});


    edittext.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String p = edittext.getText().toString().trim();
            if (p.length() <= 3) {
                InputFilter filter = new InputFilter() {
                    @Override
                    public CharSequence filter(CharSequence source, int start, int end,
                                               Spanned dest, int dstart, int dend) {
                        for (int i = start; i < end; i++) {
                            if (!Character.isLetter(source.charAt(i))) {
                                return "";
                            }
                        }
                        return null;
                    }
                };
                edittext.setFilters(new InputFilter[]{filter});
                edittext.setInputType(InputType.TYPE_CLASS_TEXT);

            } else {
                InputFilter filter = new InputFilter() {
                    @Override
                    public CharSequence filter(CharSequence source, int start, int end,
                                               Spanned dest, int dstart, int dend) {
                        for (int i = start; i < end; i++) {
                            if (!Character.isDigit(source.charAt(i))) {
                                return "";
                            }
                        }
                        return null;
                    }
                };
                int maxLengthofEditText = 12;
                edittext.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLengthofEditText)});
                //vE_apor_salesordnum.setFilters(new InputFilter[]{filter});
                edittext.setInputType(InputType.TYPE_CLASS_NUMBER);
            }

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });``
}

【讨论】:

    【解决方案2】:
    button.setOnClickListener(new View.OnClickListener() {
    
    
    
        @Override
    
        public void onClick(View v) {
    
            if(checkString(editText.getText().toString())) {
    
                editText.setText("Corect");
    
            }
    
        }
    
    });
    
    }
    
    
    
    private boolean checkString(String s) {
    
    return s.matches("^[a-zA-Z]{4}[0-9]$"); //here 4 is alphabet for first 4 character and remaining are numerics
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-24
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 2011-08-26
      • 1970-01-01
      相关资源
      最近更新 更多