我在 log.d ing logcat 時收到的值為 true ,但是當我將該值分配給布爾變數時,它會更改為 false 并且我無法使用該值執行 if 條件,因為它也顯示為 false。那就是我只能在日志中將值設為 true,不知道如何將該值傳遞給變數或檢查某些條件。此代碼用于驗證電話號碼??。
Log.d("testi3", "id " edit_number.getText());
if (number.isEmpty()) {
Log.d("testi3", "id empty" edit_number.getText());
edit_number.setError(getResources().getString(R.string.phone_error));
isPhoneValid = false;
} else {
Log.d("testi3", "id else " edit_number.getText());
Pattern ptrn = Pattern.compile("[7-9][0-9]{9}");
Matcher match = ptrn.matcher(number);
Log.d("testi3", "id else 1 " (match.find() && match.group().equals(number)));
isPhoneValid = (match.find() && match.group().equals(number));
Log.d("testi3", "id else validi" isPhoneValid);
if ((match.find() && match.group().equals(number))) {
Log.d("testi3", "id else 2 " (match.find() && match.group().equals(number)));
isPhoneValid = true;
} else {
Log.d("testi3", "id else 3 " (match.find() && match.group().equals(number)));
edit_number.setError(getResources().getString(R.string.phone_error));
isPhoneValid = false;
}
}
這是輸入數字作為輸入的 logcat
D/testi3: id 9048857563
D/testi3: id else 9048857563
D/testi3: id else 1 true
D/testi3: id else validi false
D/testi3: id else 3 false
uj5u.com熱心網友回復:
甲匹配從圖案通過呼叫圖案的匹配方法創建的。創建后,匹配器可用于執行三種不同型別的匹配操作:
- 該比賽方法的嘗試來匹配圖案中的整個輸入序列。
- 該lookingAt方法企圖以匹配輸入序列,起始于開始時,對所述圖案。
- 該發現方法掃描尋找與模式匹配的下一個子輸入序列。
這些方法中的每一個都回傳一個指示成功或失敗的布林值。可以通過查詢匹配器的狀態獲得有關成功匹配的更多資訊。
匹配- 嘗試將整個區域與模式匹配。如果匹配成功,則可以通過 start、end 和 group 方法獲得更多資訊。
在您的場景中,當您第一次使用 -match 匹配模式時,(match.find() && match.group().equals(number)))發現成功并且matcher更新了中的值,更具體地說matchFound,group更新了值。下次使用相同的匹配器組比較值不滿足條件,因此結果為 false。
您可以match.matches()用來檢查匹配是否成功,以便下次使用匹配而不是再次比較。
或者您可以使用reset()方法重置匹配器
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/377549.html
