Saya punya String
yang mewakili nilai integer dan ingin mengubahnya menjadi int
. Apakah ada padanan yang setara dengan Jawa Integer.parseInt(String)
?
Saya punya String
yang mewakili nilai integer dan ingin mengubahnya menjadi int
. Apakah ada padanan yang setara dengan Jawa Integer.parseInt(String)
?
Jawaban:
Gunakan toInteger()
metode untuk mengonversi a String
menjadi Integer
, misalnya
int value = "99".toInteger()
Alternatif, yang menghindari menggunakan metode usang (lihat di bawah) adalah
int value = "66" as Integer
Jika Anda perlu memeriksa apakah String
dapat dikonversi sebelum melakukan konversi, gunakan
String number = "66"
if (number.isInteger()) {
int value = number as Integer
}
Dalam versi Groovy terbaru salah satu toInteger()
metode telah usang. Berikut ini diambil dari org.codehaus.groovy.runtime.StringGroovyMethods
dalam Groovy 2.4.4
/**
* Parse a CharSequence into an Integer
*
* @param self a CharSequence
* @return an Integer
* @since 1.8.2
*/
public static Integer toInteger(CharSequence self) {
return Integer.valueOf(self.toString().trim());
}
/**
* @deprecated Use the CharSequence version
* @see #toInteger(CharSequence)
*/
@Deprecated
public static Integer toInteger(String self) {
return toInteger((CharSequence) self);
}
Anda dapat memaksa versi metode yang tidak usang dipanggil menggunakan sesuatu yang mengerikan seperti:
int num = ((CharSequence) "66").toInteger()
Secara pribadi, saya lebih suka:
int num = 66 as Integer
isInteger()
terlebih dahulu, karena toInteger()
akan mengeluarkan pengecualian jika string tidak numerik. Hal yang sama berlaku untuk toFloat()
/isFloat()
int
memang int
. Groovy masih akan menampilkan kelas Integer, karena tinju, tetapi Anda misalnya tidak akan dapat menetapkan null
ke int
, yang dimungkinkan pada 1.0. Kami menganggap perubahan itu tidak kritis, karena Anda sudah tidak bisa menggunakan null sebagai argumen untuk jenis parameter pemanggilan metode int
. Ini semua masih berbeda dari Jawa, karena di Jawa Anda tidak dapat mengkonversi Integer ke Long dengan penugasan sederhana atau memanggil metode pengambilan int dengan Long.
StringGroovyMethods.isInteger(String)
dan DefaultGroovyMethods.isInteger(CharSequence)
tidak digunakan lagi StringGroovyMethods.isInteger(CharSequence)
. Sama berlaku untuk toInteger()
.
Beberapa cara untuk melakukannya, ini favorit saya:
def number = '123' as int
isInteger()
dulu.
Integer.parseInt(String)
yang juga melemparkan Pengecualian jika string bukan angka, jadi diberi pertanyaan, saya tidak menganggap ini sebagai "masalah"
Sebagai tambahan untuk jawaban Don , tidak hanya asyik menambahkan .toInteger()
metode untuk String
s, itu juga menambahkan toBigDecimal()
, toBigInteger()
, toBoolean()
, toCharacter()
, toDouble()
, toFloat()
, toList()
, dan toLong()
.
Dalam nada yang sama, groovy juga menambahkan is*
persamaan untuk semua yang kembali true
jika String
pertanyaan tersebut dapat diuraikan ke dalam format yang dimaksud.
Halaman GDK yang relevan ada di sini.
isInteger()
, lalu lakukan toInteger()
... itu, kecuali Anda lebih suka menambahkan try
/ catch
blok :) tetapi menggunakan pengecualian untuk ini adalah ide yang buruk.
Saya tidak yakin apakah itu diperkenalkan di versi groovy terbaru (jawaban awal sudah cukup lama), tetapi sekarang Anda dapat menggunakan:
def num = mystring?.isInteger() ? mystring.toInteger() : null
atau
def num = mystring?.isFloat() ? mystring.toFloat() : null
Saya sarankan menggunakan pelampung atau bahkan ganda daripada bilangan bulat dalam kasus ini jika string yang disediakan tidak dapat diandalkan.
mystring.toInteger()
alih-alih mystring.toFloat()
. Jadi def num = mystring?.isInteger() ? mystring.toInteger() : null
itu benar.
Yah, Groovy menerima bentuk Java dengan baik. Jika Anda bertanya apakah ada cara Groovier , ada cara untuk melakukannya Integer
.
Keduanya ditampilkan di sini:
String s = "99"
assert 99 == Integer.parseInt(s)
Integer i = s as Integer
assert 99 == i
Anda juga dapat melakukan impor statis
import static java.lang.Integer.parseInt as asInteger
dan setelah penggunaan ini
String s = "99"
asInteger(s)
toInteger()
Metode tersedia di asyik, Anda bisa menggunakannya.
Beberapa cara untuk mencapai ini. Contohnya seperti di bawah ini
a. return "22".toInteger()
b. if("22".isInteger()) return "22".toInteger()
c. return "22" as Integer()
d. return Integer.parseInt("22")
Semoga ini membantu
Konversi Gaya asyik:
Integer num = '589' as Integer
Jika Anda memiliki parameter permintaan:
Integer age = params.int('age')
Ini cara lain. jika Anda tidak menyukai pengecualian.
def strnumber = "100"
def intValue = strnumber.isInteger() ? (strnumber as int) : null
Cara menggunakan masih harus menjadi toInteger (), karena itu tidak benar-benar usang.
int value = '99'.toInteger()
Versi String sudah usang, tetapi CharSequence adalah sebuah Interface yang mengimplementasikan String. Jadi, menggunakan String tidak apa-apa, karena kode Anda akan tetap berfungsi walaupun metode tersebut hanya akan bekerja dengan CharSequence. Hal yang sama berlaku untuk isInteger ()
Lihat pertanyaan ini untuk referensi: Bagaimana cara mengubah sebuah String ke CharSequence?
Saya berkomentar, karena gagasan usang tentang metode ini membuat saya bingung dan saya ingin menghindarinya untuk orang lain.
Cara Sederhana Mengonversi String Menjadi Integer Di Groovy Adalah Sebagai Berikut ...
String aa="25"
int i= aa.toInteger()
Sekarang "i" Memegang Nilai Integer.
toInteger()
metode untuk mengonversi ...