我是靠谱客的博主 单纯水壶,最近开发中收集的这篇文章主要介绍android EditText限制输入框只能输入某些特殊字符、汉字、数字、英文字母等,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

android EditText限制输入框只能输入某些特殊字符、汉字、数字、英文字母等

方法一:在EditText里面设置属性digits,其内容为可以输入的符号,其他的符号不可输入(不能设置中文)

<EditText
android:id="@+id/editMoneyValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:digits="12435643asdlfj"
/>

方法二:正则表达式


class RegexFilter(private val regex: Regex, private val max: Int): InputFilter{
override fun filter(source: CharSequence, start: Int, end: Int, dest: Spanned, dstart: Int,
dend: Int): CharSequence? {
if (source.any { !(it == '.' || it in '0'..'9') }) {
return null
}
val keep = min(max - (dest.length - (dend - dstart)), end - start)
val result = StringBuilder(dest).replace(dstart, dend, source.substring(start, start + max(keep, 0)))
return when {
keep <= 0 -> ""
dest.isEmpty() && source.toString() == "." -> "0."
else -> {
when {
regex.matches(result) -> null
else -> dest.subSequence(dstart, dend)
}
}
}
}
}

调用方式:

 editDebtValue.filters = arrayOf(RegexFilter("[\d]{0,12}?(\.[\d]{0,2}?)?".toRegex(), 15))

效果:只能输入两位小数和12位整数

方法三:自定义筛选器

/**
* 默认可以输入字母、汉字、数字以及()()..·等符号,s为筛选条件
*/
class OppositePersonalFilter(val s : String = "[a-zA-Z|u4e00-u9fa5()()..·]+") : InputFilter{
override fun filter(source: CharSequence?, start: Int, end: Int, dest: Spanned?, dstart: Int, dend: Int): CharSequence? {
val p = Pattern.compile(s)
val m = p.matcher(source.toString())
for (i in start until end) {
val charGet = source?.get(i)
if (!Character.isLetterOrDigit(charGet!!)
&& !m.matches()
) {
return ""
}
}
return null
}
}

调用方式:

editMoneyValue.apply {
filters = arrayOf(OppositePersonalFilter(), InputFilter.LengthFilter(50))
}

效果:只能输入中文、英文和几个设定的特殊字符----()()..·,相当于白名单,也可以转换筛选条件(if (!Character.isLetterOrDigit(charGet!!)&& !m.matches() ) )达到黑名单效果。


 

最后

以上就是单纯水壶为你收集整理的android EditText限制输入框只能输入某些特殊字符、汉字、数字、英文字母等的全部内容,希望文章能够帮你解决android EditText限制输入框只能输入某些特殊字符、汉字、数字、英文字母等所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部