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.