Android限制输入框 4 个中文字符(汉字/Emoji)或 12 个英文字符(字母/数字)
✏️ 丨 遇到的问题
昨天产品提出的一个Bug,用户姓名需要添加长度限制,但对中、英文的限制要求又不一致,所以就不能只用字符串的长度去判断了。
✏️ 丨 解题思路
不管是中文还是英文字符,在编译的时候,最终都会被计算机转成二进制编码,所以我们的解题思路就是以 Byte 字节为核心,在 UTF-8 编码下,将中英文字符转成 Byte 数组,再计算 Byte 数组所占的空间大小,在输入框的拦截器中进行比较,实现拦截效果。
✏️ 丨 实现方式
1. 不同的编码,中英字符比值不同,可以根据自己的需求去选择
private val Charset_UTF = StandardCharsets.UTF_8; //中英字符比值1:3
private val charset_GB = Charset.forName("GB2312") //中英字符比值1:2
我们的需求:中英字符比值是1:3,所以我选择了UTF-8编码
查看中英文字符比值,可以在记事本中查看