今天在项目中遇到了EditText设置登录密码的时候,输入了中文字符,这样一来就和PC端相冲突了.想了很久,尝试了几个办法,仍然没有有效的解决.
1.通过Matcher来过滤掉其中的中文字符:
//判断是否有中文字符
static String regEx = "[\u4e00-\u9fa5]";
static Pattern pat = Pattern.compile(regEx);
/**
* 判断字符串中是否包含有中文文字
* */
public static boolean isContainsChinese(String str)
{
Matcher matcher = pat.matcher(str);
boolean flg = false;
if (matcher.find()) {
flg = true;
}
return flg;
}
这样做,并没有限制住中文的标点符号之类的,仅仅显示住了不可输入中文.
2.查阅之后,发现editText有一个属性digits ,可以限制可输入的字符.
<EditText
android:id = "@+id/et"
style = "@style/customEditText"
android:digits = "@string/caninputnum"/>
<Resources>
<string name = "caninputnum">_.?!@#$%^&*()1234567890qwertyuiopasdfghjklzxcvbnm,./';QWERTYUIOP[]';LKJHAGSFDZCXVBNM,./</string>
</Resources>
这么以来,就基本限制住了editText的需求,但是缺陷也很明显,如果有其他的特殊字符,那么也会有问题.