好的,我完全重寫了這個問題,因爲這個問題有效,我想知道它爲什麼起作用。避免在Java的string.matches()方法中兩次匹配相同的值
假設我有一個號碼,testNumber與567
我想知道一個值,如果接下來的兩個數字(shouldPassTest和shouldFailTest)相同的數字,但在不同的地方10S。
所以這裏的代碼:
int testNumber = 567;
int num1 = 5;
int num2 = 6;
int num3 = 7;
int shouldPassTest = 756;
int shouldFailTest = 777;
if(Integer.toString(shouldPassTest).matches("[5,6,7][5,6,7][5,6,7]")
{
//Do some cool stuff
}
if(Integer.toString(shouldFailTest).matches("[5,6,7][5,6,7][5,6,7]")
{
//Do some cool stuff
}
當您運行,是每一位都從可用位的範圍內測試時,會發生什麼(5,6和7)。理論上,shouldFailTest 實際上應該通過測試看到7如何符合我的三個標準之一,儘管3次。
但是,測試時發生的是777返回false。這正是我想在我的代碼中得到的結果,但我想知道爲什麼它發生了。匹配方法測試是否確保每個數字只匹配一次?
謝謝!
此帖被高度編輯。運行我的代碼後,我發現該方法正是我想要的,但現在我想知道爲什麼。謝謝。
這聽起來像你想看看是否一個數是另一個字謎。 – azurefrog
「不同的解決方案」。使用'Integer.toString'後,將字符串分解爲字符,並使用數組來保存字符。然後你可以從數組中刪除東西。更好的辦法是使用'Set',但如果你的數字可以有多個相同的數字,那麼這樣做不會很好。但不要試圖用正則表達式來解決這個問題。 – ajb
是的,奇怪的是,代碼正是我想要的。 777返回false。現在我既驚喜又困惑。 –