Konverter streng til heltal i Groovy

1. Oversikt

I denne korte opplæringen viser vi forskjellige måter å konvertere fra String til Heltall i Groovy.

2. Støping med som

Den første metoden vi kan bruke til konverteringen er som nøkkelord, som er det samme som å kalle klasse asType () metode:

@Test ugyldig gittString_whenUsingAsInteger_thenConvertToInteger () {def stringNum = "123" Heltall forventet Heltall = 123 Heltall heltallNum = strengNum som Heltall hevderEquals (heltall, forventet Heltall)}

Som ovenfor, kan vi bruke som int:

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

3. toInteger

En annen metode er fra Groovy JDK-utvidelsen for java.lang.CharSequence:

@Test ugyldig gittString_whenUsingToInteger_thenConvertToInteger () {def stringNum = "123" int expectInt = 123 int intNum = stringNum.toInteger () assertEquals (intNum, expectedInt)}

4. Heltall # parseInt

En tredje måte er å bruke Java's statiske metode Integer.parseInt ():

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

5. Heltall # intValue

En alternativ metode er å lage en ny Heltall innvende og kalle sin intValue metode:

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

Eller i dette tilfellet kan vi også bruke bare nytt heltal (stringNum):

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

6. Heltall # verdi Av

Lik Integer.parseInt (), kan vi også bruke Java's statiske metode Heltall # verdi Av:

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

7. Desimalformat

Og for vår siste metode kan vi bruke Java-er Desimalformat klasse:

@Test ugyldig givenString_whenUsingDecimalFormat_thenConvertToInteger () {def stringNum = "123" int expectedInt = 123 DecimalFormat decimalFormat = new DecimalFormat ("#") int intNum = decimalFormat.parse (stringNum) .intValue ()) assertEnt

8. Unntakshåndtering

Så, hvis konvertering mislykkes, som om det ikke er numeriske tegn, a NumberFormatException vil bli kastet. I tillegg, i tilfelle der String er null, NullPointerException vil bli kastet:

@Test (forventet = NumberFormatException.class) ugyldig givenInvalidString_whenUsingAs_thenThrowNumberFormatException () {def invalidString = "123a" invalidString som Integer} @Test (forventet = NullPointerException.class) ugyldig gittNullString_whentre

For å forhindre at dette skjer, kan vi bruke isInteger-metoden:

@Test ugyldig 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. Oppsummering

I denne korte artikkelen har vi vist noen effektive måter å bytte fra String til Heltall gjenstander i Groovy.

Når det gjelder å velge den beste metoden for å konvertere en objekttype, alle de ovennevnte er like gode. Det viktigste er å unngå feil først sjekke om verdien av String i applikasjonen vår kan være ikke-numerisk, tom eller null.

Som vanlig kan alle kodeeksempler finnes på GitHub.