2010-01-18 10 views
8

Jest to dość proste w Javie do analizowania numer z String, tj Integer.parseInt (-ów), jeżeli ciąg w formacie „n” lub „-n”, ale niestety nie można zanalizować ciągu znaków w formacie '+ n'.liczba Parse z dodatniej/ujemnej prefiksu z ciągiem w Javie

Więc co jest najskuteczniejszym/elegancki sposób do analizowania numer z ciągiem w Javie, jeśli zawiera dodatnią lub ujemną prefix: „+ n” lub „-n”?

Odpowiedz

10
Integer.parseInt(s.replace("+", "")); 

W rzeczywistości istnieje wiele pułapek przy użyciu Integer do analizowania liczb tak, że Integer ma bardzo konkretne granice rozmiaru i formatu („1.000.000,00”) nie jest analizowanie ten sposób, ale biorę swojej pytanie jako Integer.parseInt spełnia twoje potrzeby, po prostu musisz poradzić sobie z + w swoich danych.

+0

java.text.NumberFormat jest prawdopodobnie parserem do użycia, ale nadal nie rozwiązuje problemu z "+". String.replace(), jak pokazano, robi. –

+0

Tak, rzeczywiście, miałem nadzieję, że jest jakieś rozwiązanie oparte na wbudowanych analizatorach/formaterach ... –

+0

@Gennady Shumakher, czy możesz rozwinąć zakres możliwości tego, co musisz przeanalizować? – Yishai

0

Wystarczy FYI, to została ustalona w Javie 7.

z, Java SE8 for the Really Impatient

Przed JDK 1.7, co było wynikiem następnego segmentu kodu?

double x = Double.parseDouble("+1.0");

int n = Integer.parseInt("+1");

Pat się na odwrocie, gdybyś znała odpowiedź: +1.0 zawsze była ważna liczba zmiennoprzecinkowa, ale aż Java 7, +1 nie był liczbą całkowitą. Zostało to teraz naprawione dla wszystkich różnych metod konstruujących wartości z łańcuchów o wartościach int, long, short, byte, i BigInteger. Jest ich więcej niż myślisz. Oprócz analizowania (Int | Long | Short | Byte) istnieją metody dekodowania , które działają z wejściami szesnastkowymi i ósemkowymi oraz valueOf metodami, które dają obiekty opakowania. Zaktualizowano także konstruktor BigInteger(String) .