2012-01-08 1 views

risposta

8

Beh, si potrebbe utilizzare l'operatore condizionale invece:

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

Se avete bisogno di fare questo in più posti, si sarebbe probabilmente vuole mettere questo in un metodo separato. Si noti che è necessario considerare anche situazioni in cui myString è null o contiene testo non numerico.

0

Sì. (Convalida i tuoi input prima di fare supposizioni su cosa ci sia in loro. :-)

+1 per aver già trovato il common-lang di Apache con StringUtils.

0

Integer.parseInt(String) non accetta input non numerici, compresi valori null e stringhe vuote.

O difenditi da quello che hai suggerito, o prendi la NFE.

22

Sì, ma: avvolgerlo in un metodo di sottile (ed eliminare la ridondanza else) oppure usa un'implementazione esistente, come Commons Lang's NumberUtils.toInt(str, defaultValue):

NumberUtils.toInt(myString, 0); 

Questo metodo gestisce null valori e errori di conversione.

1

quello che hai è bene, ma come uno stile di codifica che preferiscono fare i test "positivo" (isBlank), piuttosto che "negativo" (isNotBlank), vale a dire

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

o, più brevemente:

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

non so perché sono stato alla ricerca di questo, ma qui è il modo più semplice:

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

Se la stringa può essere vuoto lo faccio in questo modo:

Integer.parseInt("0" + inputString) 

Quando io non sono sicuro che contenga solo cifre:

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

potrei essere un novizio Ma perché questo non upvoted a tutti , un trucco così semplice e semplice. Aggiornamento, appena realizzato perché, fallisce per valori negativi! –

+0

Questo modo complicato funziona solo per numeri interi senza segno (numero positivo) – NPE

+0

Corretto. Per il caso generale vorrei usare qualche libreria di terze parti * (vedi altre risposte) –