private class myTextWatcher1 implements TextWatcher {
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void onTextChanged(CharSequence arg0, int startIndex, int arg2,
int addCount) {//可以优化
deviceName = deviceNameTv.getText().toString().trim();
boolean flag =false;
if (deviceName != null && deviceName.length() > 0) {
//过滤不需要的字符
for (int i = 0; i < deviceName.length(); ) {
String charTest = deviceName.substring(i , i+1);
if (!isLetterDigitOrChinese(charTest)) {
flag = true;
String newStr1 = deviceName.substring(0, i);
String newStr2 = deviceName.substring(i+1, deviceName.length());
deviceName = newStr1+newStr2;
}else{
i++;
}
}
//判断长度,截取有效长度字符
if(deviceName.length() > 20 ){
//优先用 The value cannot exceed 20 characters. 如果太长就用 Max. size: 20 characters
Toast.makeText(
ESNResultActivity.this,
getResources().getString(
R.string.esn_device_name_max_length_msg),
Toast.LENGTH_LONG).show();
deviceName = deviceName.substring(0, 20);
deviceNameTv.setText(deviceName);
deviceNameTv.setSelection(deviceName.length());
if(flag){
Toast.makeText(
ESNResultActivity.this,
getResources().getString(
R.string.esn_device_name_msg),
Toast.LENGTH_LONG).show();
}
}else{
if(flag){
deviceNameTv.setText(deviceName);
Toast.makeText(
ESNResultActivity.this,
getResources().getString(
R.string.esn_device_name_msg),
Toast.LENGTH_LONG).show();
}
}
if(null !=deviceName && !"".equals(deviceName.trim())){
deviceNameTv.setSelection(deviceName.length());
}
}
}
}
/**
* 判断字符串中是否仅包含字母数字和汉字
* @param str
* @return
*/
private boolean isLetterDigitOrChinese(String str){
// String regex = "^[a-z0-9A-Z\u4e00-\u9fa5]+$";
String regex = "[a-z0-9A-Z`~!@#$%^&*()\\-_=+\\|\\[{}\\];:'\",<.>/?\\s]";
return Pattern.compile(regex).matcher(str).find(); /*str.matches(regex);*/
}
11-24
1万+