Android - EditText - 身份證格式判斷及輸入限制處理

EditText - 身份證格式判斷及輸入限制處理

這次要對EditText身份證的格式驗證
要自行撰寫TextWatcher做偵測

撰寫如下
 


private TextWatcher mEditIdTextWatcher= new TextWatcher() {
	private CharSequence temp;

	@Override
	public void beforeTextChanged(CharSequence s, int start, int count,int after) {
		temp = s;
	}
	@Override
	public void onTextChanged(CharSequence s, int start, int before,int count) {

	}
	@Override
	public void afterTextChanged(Editable s) {
		//判斷是否為身分證格式
		if(!isIdNoFormat(temp.toString())) {
			//TODO:身份證錯誤處理
		} 
	}


	/**
	 * 判斷是否為身份證字號格式 (
	 */
	public boolean isIdNoFormat(String word) {
		boolean check = true;

		for(int i = 0 ; i < word.length();i++) {
			String s = word.substring(i,i+1);
			if(i==0) {
				if(!isEnglish(s)) {
					check = false;
					break;
				}
			} else {
				if(!isDigit(s)) {
					check = false;
					break;
				}
			}
		}

		return check;
	}


	/**
		* 英文判斷
		*/
	public boolean isEnglish(String word){
		boolean check = true;
		for(int i=0;i<word.length();i++) {
			int c = (int)word.charAt(i);
			if(c>=65 && c<=90 || c>=97 && c<=122) {
				//是英文
			} else {
				check = false;
			}
		}
		return check;
	}

	/**
		 * 數字判斷
		*/
	public boolean isDigit(String word) {
		boolean check = true;
		for(int i=0;i<word.length();i++) {
			int c = (int)word.charAt(i);
			if(c>=48 && c<=57 ) {
				//是數字
			} else {
				check = false;
			}
		}
		return check;
	}

};

EditText則設定,則就完成,我這個身份證判斷,只用來判斷第一個字為英文,其它為數字。EditText有設定最大長度為10。再來就不做其它判斷,需要則自行撰寫

edit_input.addTextChangedListener(mEditInputTextWatcher);