Preveďte reťazec na celé číslo v Groovy

1. Prehľad

V tomto krátkom tutoriáli si ukážeme rôzne spôsoby prevodu z String do Celé číslo v Groovy.

2. Casting s ako

Prvá metóda, ktorú môžeme použiť na konverziu, je ako kľúčové slovo, ktoré je rovnaké ako volanie súboru triedy asType () metóda:

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

Rovnako ako vyššie uvedené, môžeme použiť ako int:

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

3. toInteger

Ďalšia metóda je z rozšírenia Groovy JDK pre java.lang.CharSequence:

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

4. Celé číslo # parseInt

Tretím spôsobom je použitie Statická metóda Java Integer.parseInt ():

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

5. Celé číslo # intValue

Alternatívnou metódou je vytvorenie nového Celé číslo objekt a zavolaj jeho intValue metóda:

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

Alebo v tomto prípade môžeme použiť aj iba nové celé číslo (stringNum):

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

6. Celé číslo # hodnotaOf

Podobný Integer.parseInt (), môžeme tiež použiť statickú metódu Java Celé číslo # hodnotaOf:

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

7. DecimalFormat

A pre našu poslednú metódu môžeme použiť Java DecimalFormat trieda:

@Test void givenString_whenUsingDecimalFormat_thenConvertToInteger () {def stringNum = "123" int expectInt = 123 DecimalFormat decimalFormat = nový DecimalFormat ("#") int intNum = decimalFormat.parse (stringNum) .intValue (stringNum) .intValue

8. Spracovanie výnimiek

Takže ak prevod zlyhá, napríklad ak existujú nečíselné znaky, a NumberFormatException bude vyhodený. Dodatočne v prípade, keď String je nulový, NullPointerException bude vyhodené:

@Test (očakáva sa = NumberFormatException.class) void givenInvalidString_whenUsingAs_thenThrowNumberFormatException () {def invalidString = "123a" invalidString ako Integer} @Test (očakáva sa = NullPointerException.class) void givenNullString_whenUsingToInsting_tohen_sehenToInstring}

Aby sme tomu zabránili, môžeme Použi metóda isInteger:

@Test void givenString_whenUsingIsInteger_thenCheckIfCorrectValue () {def invalidString = "123a" def validString = "123" def invalidNum = invalidString? .IsInteger ()? invalidString ako Integer: false def correctNum = validString? .isInteger ()? validString ako celé číslo: false assertEquals (false, invalidNum) assertEquals (123, correctNum)}

9. Zhrnutie

V tomto krátkom článku sme si ukázali niekoľko efektívnych spôsobov prechodu od String do Celé číslo objekty v Groovy.

Pokiaľ ide o výber najlepšej metódy prevodu typu objektu, všetky vyššie uvedené sú rovnako dobré. Najdôležitejšie je vyhnúť sa najskôr chybám kontrola, či je hodnota String v našej aplikácii môžu byť nečíselné, prázdne alebo nulový.

Ako obvykle nájdete všetky príklady kódov na serveri GitHub.


$config[zx-auto] not found$config[zx-overlay] not found