EditText限制输入长度和特殊字符

EditText限制输入长度和特殊字符

在一般的APP中都会有编辑个人信息的功能,比如编辑昵称之类的。但是EditText在输入文本信息的时候,比如输入换行或空格,那还是比较讨厌的,同时我们也不应该让用户无限制的输入,所以对输入信息的限制也是有必要的。

看下面代码:

MainActivity

public class MainActivity extends AppCompatActivity {

    private static final int MAX_LENGTH = 15;
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initListener();
    }

    private void initView() {
        editText = (EditText) findViewById(R.id.edit);
    }

    private void initListener() {

        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 edit = editText.getText().toString();
                //获取过滤特殊字符后的数据
                String stringFilter = stringFilter(edit);
                if (!edit.equals(stringFilter)) {
                    //如果2者不等,将匹配后的数据设置给EditText显示
                    editText.setText(stringFilter);
                }
                //将光标设置到EditText最后的位置
                editText.setSelection(editText.length());
            }

            @Override
            public void afterTextChanged(Editable s) {
                //如果EditText中的数据不为空,且长度大于指定的最大长度
                if (!TextUtils.isEmpty(s) && s.length() > MAX_LENGTH) {
                    //删除指定长度之后的数据
                    s.delete(MAX_LENGTH, editText.getSelectionEnd());
                    Toast.makeText(MainActivity.this, "超出指定长度", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
    /***
     * 匹配特殊字符,将其过滤
     * @param edit
     * @return
     */
    public String stringFilter(String edit) {
        String regEx = "[/\\:*?<>|\"\n\t]";//这里可以添加需要的匹配符号
        Pattern pattern = Pattern.compile(regEx);
        Matcher matcher = pattern.matcher(edit);
        return matcher.replaceAll("");
    }

}

效果图:

你可能感兴趣的:(android提升)