Converteer String naar geheel getal in Groovy

1. Overzicht

In deze korte tutorial laten we verschillende manieren zien om te converteren van Draad naar Geheel getal in Groovy.

2. Gieten met net zo

De eerste methode die we kunnen gebruiken voor de conversie is de net zo trefwoord, wat hetzelfde is als het aanroepen van de klas asType () methode:

@Test void givenString_whenUsingAsInteger_thenConvertToInteger () {def stringNum = "123" Geheel getal verwachtInteger = 123 Geheel getal integerNum = stringNum als geheel getal assertEquals (integerNum, verwachtInteger)}

Net als het bovenstaande kunnen we gebruiken als int:

@Test ongeldig gegevenString_whenUsingAsInt_thenConvertToInt () {def stringNum = "123" int verwachtInt = 123 int intNum = stringNum als int assertEquals (intNum, verwachtInt)}

3. naarGeheel getal

Een andere methode is van de Groovy JDK-extensie voor java.lang.CharSequence:

@Test ongeldig gegevenString_whenUsingToInteger_thenConvertToInteger () {def stringNum = "123" int verwachtInt = 123 int intNum = stringNum.toInteger () assertEquals (intNum, verwachtInt)}

4. Geheel getal # parseInt

Een derde manier is om te gebruiken Java's statische methode Geheel getal.parseInt ():

@Test ongeldig gegevenString_whenUsingParseInt_thenConvertToInteger () {def stringNum = "123" int verwachtInt = 123 int intNum = Geheel getal.parseInt (stringNum) assertEquals (intNum, verwachtInt)}

5. Geheel getal # intValue

Een alternatieve methode is om een ​​nieuw Geheel getal object en noem zijn intValue methode:

@Test ongeldig gegevenString_whenUsingIntValue_thenConvertToInteger () {def stringNum = "123" int verwachtInt = 123 int intNum = nieuw geheel getal (stringNum) .intValue () assertEquals (intNum, verwachtInt)}

Of, in dit geval, kunnen we ook gewoon gebruiken nieuw geheel getal (stringNum):

@Test ongeldig gegevenString_whenUsingNewInteger_thenConvertToInteger () {def stringNum = "123" int verwachtInt = 123 int intNum = nieuw geheel getal (stringNum) assertEquals (intNum, verwachtInt)}

6. Geheel getal # waardeVan

Gelijkwaardig aan Geheel getal.parseInt (), kunnen we ook Java's statische methode gebruiken Geheel getal # waardeVan:

@Test ongeldig gegevenString_whenUsingValueOf_thenConvertToInteger () {def stringNum = "123" int verwachtInt = 123 int intNum = Geheel getal.valueOf (stringNum) assertEquals (intNum, verwachtInt)}

7. DecimalFormat

En voor onze laatste methode kunnen we Java's toepassen DecimalFormat klasse:

@Test ongeldig gegevenString_whenUsingDecimalFormat_thenConvertToInteger () {def stringNum = "123" int verwachtInt = 123 DecimalFormat decimalFormat = nieuw DecimalFormat ("#") int int intNum = decimalFormat.parse (stringNum) .intValue () int.

8. Afhandeling van uitzonderingen

Zo, als de conversie mislukt, bijvoorbeeld als er niet-numerieke tekens zijn, wordt een NumberFormatException zal worden gegooid. Bovendien, in het geval waarin Draad is nul, NullPointerException zal worden gegooid:

@Test (verwacht = NumberFormatException.class) void givenInvalidString_whenUsingAs_thenThrowNumberFormatException () {def invalidString = "123a" invalidString als geheel getal} @Test (verwacht = NullPointerException.class) void givenNullString_inGeteger (nullString_inGeteger) ongeldig

Om dit te voorkomen, kunnen we gebruik de isInteger methode:

@Test ongeldig gegevenString_whenUsingIsInteger_thenCheckIfCorrectValue () {def invalidString = "123a" def validString = "123" def invalidNum = invalidString? .IsInteger ()? invalidString als geheel getal: false def correctNum = validString? .isInteger ()? validString als geheel getal: false assertEquals (false, invalidNum) assertEquals (123, correctNum)}

9. Samenvatting

In dit korte artikel hebben we enkele effectieve manieren getoond om van over te schakelen Draad naar Geheel getal objecten in Groovy.

Als het gaat om het kiezen van de beste methode om een ​​objecttype te converteren, al het bovenstaande is even goed. Het belangrijkste is om fouten te voorkomen door eerst controleren of de waarde van de Draad in onze applicatie kan niet-numeriek, leeg of nul.

Zoals gewoonlijk zijn alle codevoorbeelden te vinden op GitHub.