Hur man kontrollerar om en sträng är numerisk i Java

Hur kan du kontrollera om en sträng är ett nummer innan du analyserar den?

Du kan använda [NumberFormat#parse] (http://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#parse-java.lang.String-):

try
{
     NumberFormat.getInstance().parse(value);
}
catch(ParseException e)
{
    // Not a number.
}
Kommentarer (5)

Parsa det (dvs. med Integer#parseInt ) och fånga upp undantaget. =)

För att förtydliga: Funktionen parseInt kontrollerar om den kan analysera talet i alla fall (självklart) och om du vill analysera det ändå kommer du inte att ta någon prestandaskada genom att faktiskt göra analysen.

Om du inte vill analysera det (eller om du analyserar det mycket, mycket sällan) kan du naturligtvis göra det på ett annat sätt.

Kommentarer (3)

Jag tror att det enda sättet att på ett tillförlitligt sätt avgöra om en sträng är ett nummer är att analysera den. Så jag skulle bara analysera den, och om det är ett nummer får du numret i ett int gratis!

Kommentarer (0)