Tukarkan String ke Integer di Groovy

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kami akan menunjukkan pelbagai cara untuk menukar dari String ke Integer di Groovy.

2. Melakonkan dengan sebagai

Kaedah pertama yang boleh kita gunakan untuk penukaran adalah sebagai kata kunci, yang adalah sama seperti memanggil class () asType kaedah :

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

Seperti di atas, kita boleh menggunakan sebagai int :

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

3. keInteger

Kaedah lain adalah dari pelanjutan Groovy JDK untuk java.lang.CharSequence :

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

4. Integer # parseInt

Cara ketiga adalah menggunakan kaedah statik Java Integer.parseInt () :

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

5. Integer # intValue

Kaedah alternatif adalah membuat objek Integer baru dan memanggil kaedah intValuenya :

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

Atau, dalam kes ini, kita juga dapat menggunakan Integer baru (stringNum) :

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

6. Nilai integer # NilaiOf

Sama seperti Integer.parseInt () , kita juga dapat menggunakan kaedah statik Java Integer # valueOf :

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

7. PerpuluhanFormat

Dan untuk kaedah terakhir kami, kami dapat menerapkan kelas DecimalFormat Java :

@Test void givenString_whenUsingDecimalFormat_thenConvertToInteger() { def stringNum = "123" int expectedInt = 123 DecimalFormat decimalFormat = new DecimalFormat("#") int intNum = decimalFormat.parse(stringNum).intValue() assertEquals(intNum, expectedInt) }

8. Pengendalian Pengecualian

Jadi, jika penukaran gagal, seperti jika terdapat watak bukan angka, maka NumberFormatException akan dilemparkan . Selain itu, dalam kes di mana String adalah null , NullPointerException akan dibuang:

@Test(expected = NumberFormatException.class) void givenInvalidString_whenUsingAs_thenThrowNumberFormatException() { def invalidString = "123a" invalidString as Integer } @Test(expected = NullPointerException.class) void givenNullString_whenUsingToInteger_thenThrowNullPointerException() { def invalidString = null invalidString.toInteger() }

Untuk mengelakkan perkara ini berlaku, kita boleh menggunakan kaedah isInteger :

@Test void 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. Ringkasan

Dalam artikel pendek ini, kami telah menunjukkan beberapa cara yang berkesan untuk beralih dari String ke objek Integer di Groovy.

Ketika memilih kaedah terbaik untuk menukar jenis objek, semua perkara di atas sama baiknya. Perkara yang paling penting adalah untuk mengelakkan kesilapan dengan memeriksa terlebih dahulu apakah nilai String dalam aplikasi kita boleh berupa angka, kosong atau nol .

Seperti biasa, semua contoh kod boleh didapati di GitHub.