Konvertieren Sie String in Groovy in Integer

1. Übersicht

In diesem kurzen Tutorial zeigen wir verschiedene Möglichkeiten zum Konvertieren von String in Integer in Groovy.

2. Casting mit as

Das erste Verfahren , dass wir für die Umsetzung ist der Einsatz kann als Schlüsselwort, die gleich ist der als Aufruf Klasse AsType () Methode :

@Test void givenString_whenUsingAsInteger_thenConvertToInteger() { def stringNum = "123" Integer expectedInteger = 123 Integer integerNum = stringNum as Integer assertEquals(integerNum, expectedInteger) }

Wie oben können wir als int verwenden :

@Test void givenString_whenUsingAsInt_thenConvertToInt() { def stringNum = "123" int expectedInt = 123 int intNum = stringNum as int assertEquals(intNum, expectedInt) }

3. toInteger

Eine andere Methode stammt aus der Groovy JDK-Erweiterung für java.lang.CharSequence :

@Test void givenString_whenUsingToInteger_thenConvertToInteger() { def stringNum = "123" int expectedInt = 123 int intNum = stringNum.toInteger() assertEquals(intNum, expectedInt) }

4. Integer # parseInt

Eine dritte Möglichkeit ist die Verwendung der statischen Methode Integer.parseInt () von Java :

@Test void givenString_whenUsingParseInt_thenConvertToInteger() { def stringNum = "123" int expectedInt = 123 int intNum = Integer.parseInt(stringNum) assertEquals(intNum, expectedInt) }

5. Integer # intValue

Eine alternative Methode besteht darin, ein neues Integer- Objekt zu erstellen und seine intValue- Methode aufzurufen :

@Test void givenString_whenUsingIntValue_thenConvertToInteger() { def stringNum = "123" int expectedInt = 123 int intNum = new Integer(stringNum).intValue() assertEquals(intNum, expectedInt) }

In diesem Fall können wir auch nur eine neue Ganzzahl (stringNum) verwenden :

@Test void givenString_whenUsingNewInteger_thenConvertToInteger() { def stringNum = "123" int expectedInt = 123 int intNum = new Integer(stringNum) assertEquals(intNum, expectedInt) }

6. Integer # valueOf

Ähnlich wie bei Integer.parseInt () können wir auch die statische Methode Integer # valueOf von Java verwenden :

@Test void givenString_whenUsingValueOf_thenConvertToInteger() { def stringNum = "123" int expectedInt = 123 int intNum = Integer.valueOf(stringNum) assertEquals(intNum, expectedInt) }

7. DecimalFormat

Und für unsere letzte Methode können wir die DecimalFormat- Klasse von Java anwenden :

@Test void givenString_whenUsingDecimalFormat_thenConvertToInteger() { def stringNum = "123" int expectedInt = 123 DecimalFormat decimalFormat = new DecimalFormat("#") int intNum = decimalFormat.parse(stringNum).intValue() assertEquals(intNum, expectedInt) }

8. Ausnahmebehandlung

Also, wenn die Konvertierung fehlschlägt, wie wenn es nicht numerische Zeichen, ein Number wird geworfen . Zusätzlich kann in dem Fall , in dem String ist null , Nullpointer werden geworfen werden:

@Test(expected = NumberFormatException.class) void givenInvalidString_whenUsingAs_thenThrowNumberFormatException() { def invalidString = "123a" invalidString as Integer } @Test(expected = NullPointerException.class) void givenNullString_whenUsingToInteger_thenThrowNullPointerException() { def invalidString = null invalidString.toInteger() }

Um dies zu verhindern, können wir die isInteger-Methode verwenden :

@Test void givenString_whenUsingIsInteger_thenCheckIfCorrectValue() { def invalidString = "123a" def validString = "123" def invalidNum = invalidString?.isInteger() ? invalidString as Integer : false def correctNum = validString?.isInteger() ? validString as Integer : false assertEquals(false, invalidNum) assertEquals(123, correctNum) }

9. Zusammenfassung

In diesem kurzen Artikel haben wir einige effektive Möglichkeiten gezeigt, wie Sie in Groovy von String- zu Integer- Objekten wechseln können .

Wenn es darum geht, die beste Methode zum Konvertieren eines Objekttyps auszuwählen, sind alle oben genannten Punkte gleich gut. Das Wichtigste ist, Fehler zu vermeiden, indem Sie zunächst prüfen, ob der Wert des Strings in unserer Anwendung nicht numerisch, leer oder null sein kann .

Wie üblich finden Sie alle Codebeispiele auf GitHub.