Anroid EditText禁止输入空格、特殊符号


有时候我们需要限制EditText输入的字符类型,如空格,特殊字符等,这时候我们可以使用系统提供的输入过滤器——InputFilter。具体实现如下:


/**
     * 禁止输入空格
     * @param etText
     */
    fun setEditTextInhibitInputSpeChat(etText:EditText){
        val filter = InputFilter { source, start, end, dest, dstart, dend ->
            if(source.let { it?.equals(" ") == true })
                ""
            else null
        }
        etText.filters = arrayOf(filter)
    }

    /**
     * 禁止添加非法字符
     * @param etText
     */
    fun setEditTextInhibitInputSpeChats(etText:EditText){
        val filter = InputFilter { source, start, end, dest, dstart, dend ->
            val speChat="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?_-]"
            val pattern = Pattern.compile(speChat)
            val matcher = pattern.matcher(source.toString())
            if(matcher.find())
                return@InputFilter "";
            else return@InputFilter null;
        }
        etText.filters = arrayOf(filter)
    }

你可能感兴趣的:(Anroid EditText禁止输入空格、特殊符号)