输入校验去除中文

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);*/
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值