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.