2012-01-08 19 views

Odpowiedz

8

Cóż, można użyć operatora warunkowego Zamiast:

return StringUtils.isNotBlank(myString) ? Integer.parseInt(myString) : 0; 

Jeśli trzeba to zrobić w wielu miejscach, to prawdopodobnie chcesz umieścić to w osobnej metody. Zauważ, że powinieneś również wziąć pod uwagę sytuacje, w których myString ma wartość null lub zawiera tekst nieliczbowy.

0

Tak. (Zatwierdź swoje dane wejściowe zanim podejmiesz założenia dotyczące tego, co w nich jest. :-)

+1 za odnalezienie już popularnego Apache'a w/StringUtils.

0

Integer.parseInt(String) nie przyjmuje nieliczbowych danych wejściowych, w tym pustych znaków i pustych ciągów znaków.

Zabezpiecz się przed tym, jak sugerujesz, lub złap NFE.

1

Co masz jest w porządku, ale jako styl kodowania Wolę zrobić testy „pozytywne” (isBlank), zamiast „negatywne” (isNotBlank), tj

if (StringUtils.isBlank(myString)) { 
    return 0; 
} 
return Integer.parseInt(myString); // Note: No need for else when the if returns 

lub bardziej zwięźle:

return StringUtils.isBlank(myString) ? 0 : Integer.parseInt(myString); 
0

nie wiem dlaczego ja szukając tego, ale oto prosty sposób:

int test=str.isEmpty()?0:Integer.parseInt(str); 
2

Jeśli łańcuch może być pusta zrobić to w ten sposób:

Integer.parseInt("0" + inputString) 

Kiedy nie jestem pewien, że zawiera tylko cyfry:

Integer.parseInt(0 + inputString.replaceAll("\\D+","")) 
+0

mogę być nowicjuszem, ale dlaczego nie jest to w ogóle upvoted , taka zgrabna prosta sztuczka. Zaktualizuj, właśnie uświadomiłeś sobie, dlaczego nie ma wartości ujemnych! –

+0

Ten trudny sposób działa tylko dla niepodpisanej liczby całkowitej (liczby dodatniej) – NPE

+0

Prawidłowo. W ogólnym przypadku użyłbym innej biblioteki * Utils (zobacz inne odpowiedzi) –

Powiązane problemy