1.增加监听器
editTxt.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) {
}
@Override
public void afterTextChanged(Editable s) {
checkName(s, editTxt);
}
}
);
/**
* 检查输入的名称的合法性
*
* @param editable
* @param editText
*/
private void checkName(Editable editable, EditText editText) {
String inputStr = editable.toString().trim();
String str = stringFilter(inputStr);
if (!inputStr.equals(str)) {
editText.setText(str);
editText.setSelection(editText.getText().toString().length());
return;
}
int length = Utils.getTextLength(inputStr);
if (length > 20) {
String newStr = getStringLength(inputStr, 20);
editText.setText(newStr);
editText.setSelection(editText.getText().toString().length());
}
}
2.汉字和字母占的字符数
/**
* 获取字符数量 汉字占2个,英文占一个
*
* @param text
* @return
*/
public static int getTextSum(String text) {
int length = 0;
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) > 255) {
length += 2;
} else {
length++;
}
}
return length;
}
3.限制字母和汉字
public static String stringFilter(String str) throws PatternSyntaxException {
// 只允许字母、汉字
String regEx = "[^a-zA-Z\\u4E00-\\u9FA5]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}