Widziałem dwa style sprawdzania, czy zmienna jest poprawną liczbą całkowitą w Javie. Jeden wykonując Integer.parseInt
i przechwytując wynikowy wyjątek. Innym jest użycie Pattern. Które z poniższych rozwiązań jest lepsze?Co jest lepsze - Integer.parseInt() i złap wyjątek lub zweryfikuj ciąg ze wzorcem przed konwersją?
String countStr;
int count;
try {
count = Integer.parseInt(countStr);
} catch (Exception e) {
//return as the variable is not a proper integer.
return;
}
lub
String integerRegex = "([0-9]{0,9})";
if (countStr.isEmpty() || !Pattern.matches(integerRegex, countStr)) {
//return as the variable is not a proper integer.
return;
}
Edycja: My tu pytanie brzmi, czy robi Integer.parseInt()
i połowu wyjątek dla walidacji standardowy sposób sprawdzania poprawności int
? Przyznaję, że moje regex nie jest doskonałe. Ale czy istnieją jakieś wbudowane metody dostępne w Javie do sprawdzania poprawności int? Właściwie nie lepiej jest przeprowadzić jakąś walidację zamiast po prostu uchwycić wyjątek?
Wyrażenie regularne nie sprawdza liczb ujemnych. –
W zależności od sytuacji. –
co się stanie, jeśli zaznaczysz "2147483647", "2147483650" lub "" z wyrażeniem regularnym? –