Jadi, karena kurangnya metode seperti Long.valueOf(String s)
saya mandek.
Bagaimana cara mengubah String ke Long di Kotlin?
1. string.toLong()
Parsing string sebagai angka [Panjang] dan mengembalikan hasilnya.
@mengirimkan NumberFormatException jika string bukan representasi angka yang valid.
2. string.toLongOrNull()
Parsing string sebagai angka [Panjang] dan mengembalikan hasilnya atau
null
jika string bukan representasi angka yang valid.
3. str.toLong(10)
Parsing string sebagai angka [Panjang] dan mengembalikan hasilnya.
@mengirimkan NumberFormatException jika string bukan representasi angka yang valid.
@throws IllegalArgumentException ketika [radix] bukan radix yang valid untuk konversi string ke angka.
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4. string.toLongOrNull(10)
Parsing string sebagai angka [Panjang] dan mengembalikan hasilnya atau
null
jika string bukan representasi angka yang valid.@throws IllegalArgumentException ketika [radix] bukan radix yang valid untuk konversi string ke angka.
public fun String.toLongOrNull(radix: Int): Long? {...}
5. java.lang.Long.valueOf(string)
public static Long valueOf(String s) throws NumberFormatException
String
memiliki metode ekstensi yang sesuai:sumber
String
memiliki fungsi ekstensitoLong()
sertatoInt()
dan lainnya. Anda bisa menggunakan ini. Mungkin @ilya dapat memperbarui jawaban ini ke Kotlin saat ini (hapusjet.String
referensi.)Metode ekstensi tersedia untuk
String
mengurai mereka menjadi tipe primitif lainnya. Contoh di bawah ini:"true".toBoolean()
"10.0".toFloat()
"10.0".toDouble()
"10".toByte()
"10".toShort()
"10".toInt()
"10".toLong()
sumber
str.toLongOrNull()
dan metode lain yang serupa juga berguna jika Anda tidak dapat menjamin bahwa input akan diformat dengan benar. Dengan ini, Anda dapat melakukan hal-hal sepertistr.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
Catatan: Jawaban yang disebutkan
jet.String
sudah usang. Inilah Kotlin saat ini (1.0):Apa pun
String
di Kotlin sudah memiliki fungsi ekstensi yang dapat Anda hubungitoLong()
. Tidak ada yang istimewa diperlukan, gunakan saja.Semua fungsi ekstensi untuk
String
didokumentasikan. Anda dapat menemukan orang lain untuk lib standar dalam referensi apisumber
Ini menarik. Kode seperti ini:
membuat output ini:
Saya kira, Kotlin membuat konversi dari
java.lang.Long
dan lama primitif kekotlin.Long
otomatis dalam kasus ini. Jadi, ini solusinya, tapi saya akan senang melihat alat tanpa penggunaan paket java.lang.sumber
Sebenarnya, 90% dari waktu Anda juga perlu memeriksa 'panjang' itu valid, jadi Anda perlu:
Ada 'orNull' yang setara untuk setiap 'toLong' dari tipe dasar, dan ini memungkinkan untuk mengelola kasus yang tidak sesuai dengan Kotlin? idiom.
sumber
string.toLong ()
di mana
string
variabel Anda.sumber
Satu kemungkinan Jawa tua yang baik apa yang tidak disebutkan dalam jawaban adalah
java.lang.Long.decode(String)
.String Desimal:
Kotlin
String.toLong()
setara dengan JavaLong.parseLong(String)
:String Non-desimal:
Kotlin
String.toLong(radix: Int)
setara dengan eLong.parseLong(String, int)
Java :Dan inilah
java.lang.Long.decode(String)
gambarannya:Itu berarti
decode
dapat mem-parsing String seperti"0x412"
, di mana metode lain akan menghasilkan aNumberFormatException
.sumber
Untuk mengonversi a
String
menjadiLong
(yang mewakili integer bertanda 64-bit) di Kotlin 1.3 cukup sederhana .Anda dapat menggunakan salah satu dari tiga metode berikut:
sumber
Jika Anda tidak ingin menangani
NumberFormatException
saat parsingsumber
Sebenarnya ada beberapa cara:
Diberikan:
Maka kita memiliki:
sumber