Konverter streng til heltal i Groovy

1. Oversigt

I denne korte vejledning viser vi forskellige måder at konvertere fra Snor til Heltal i Groovy.

2. Støbning med som

Den første metode, vi kan bruge til konverteringen, er som nøgleord, som er det samme som at kalde klassens asType () metode:

@Test ugyldigt givenString_whenUsingAsInteger_thenConvertToInteger () {def stringNum = "123" Heltal forventet Heltal = 123 Heltal heltalNum = strengNum som heltal hævderEquals (heltal, forventet heltal)}

Som det ovenstående kan vi bruge som int:

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

3. til heltal

En anden metode er fra Groovy JDK-udvidelsen til java.lang.CharSequence:

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

4. Heltal # parseInt

En tredje måde er at bruge Java's statiske metode Integer.parseInt ():

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

5. Heltal # intValue

En alternativ metode er at oprette en ny Heltal indvende og kalde dens intValue metode:

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

Eller i dette tilfælde kan vi også bruge bare nyt heltal (stringNum):

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

6. Heltal # værdiOf

Svarende til Integer.parseInt (), kan vi også bruge Java's statiske metode Heltal # værdiOf:

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

7. Decimalformat

Og for vores sidste metode kan vi anvende Java'er Decimalformat klasse:

@Test ugyldigt givenString_whenUsingDecimalFormat_thenConvertToInteger () {def stringNum = "123" int forventetInt = 123 DecimalFormat decimalFormat = ny DecimalFormat ("#") int intNum = decimalFormat.parse (stringNum) .intValue ()) assertEnt

8. Undtagelse Håndtering

Så, hvis konvertering mislykkes, som hvis der er ikke-numeriske tegn, a NumberFormatException vil blive kastet. Derudover i tilfælde hvor Snor er nul, NullPointerException vil blive kastet:

@Test (forventet = NumberFormatException.class) ugyldigt givenInvalidString_whenUsingAs_thenThrowNumberFormatException () {def invalidString = "123a" ugyldigString som heltal} @Test (forventet = NullPointerException.class) ugyldigt givetNullString_whenString_whenString_whenString_whenString

For at forhindre, at dette sker, kan vi brug isInteger-metoden:

@Test ugyldigt 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. Resume

I denne korte artikel har vi vist nogle effektive måder at skifte fra Snor til Heltal genstande i Groovy.

Når det kommer til at vælge den bedste metode til at konvertere en objekttype, alle ovenstående er lige så gode. Det vigtigste er først at undgå fejl kontrollere, om værdien af Snor i vores ansøgning kan være ikke-numerisk, tom eller nul.

Som sædvanligt kan alle kodeeksempler findes på GitHub.