Donc, en raison du manque de méthodes comme Long.valueOf(String s)
je suis coincé.
Comment convertir String en Long dans Kotlin?
1. string.toLong()
Analyse la chaîne sous forme de nombre [Long] et renvoie le résultat.
@throws NumberFormatException si la chaîne n'est pas une représentation valide d'un nombre.
2. string.toLongOrNull()
Analyse la chaîne comme un nombre [Long] et renvoie le résultat ou
null
si la chaîne n'est pas une représentation valide d'un nombre.
3. str.toLong(10)
Analyse la chaîne sous forme de nombre [Long] et renvoie le résultat.
@throws NumberFormatException si la chaîne n'est pas une représentation valide d'un nombre.
@throws IllegalArgumentException lorsque [base] n'est pas une base valide pour la conversion de chaîne en nombre.
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4. string.toLongOrNull(10)
Analyse la chaîne comme un nombre [Long] et renvoie le résultat ou
null
si la chaîne n'est pas une représentation valide d'un nombre.@throws IllegalArgumentException lorsque [base] n'est pas une base valide pour la conversion de chaîne en nombre.
public fun String.toLongOrNull(radix: Int): Long? {...}
5. java.lang.Long.valueOf(string)
public static Long valueOf(String s) throws NumberFormatException
String
a une méthode d'extension correspondante:la source
String
ont une fonction d'extensiontoLong()
ainsi que d'toInt()
autres. Vous pouvez les utiliser. Peut-être que @ilya peut mettre à jour cette réponse à Kotlin actuel (supprimer lajet.String
référence.)Des méthodes d'extension sont disponibles pour
String
s pour les analyser en d'autres types primitifs. Exemples ci-dessous:"true".toBoolean()
"10.0".toFloat()
"10.0".toDouble()
"10".toByte()
"10".toShort()
"10".toInt()
"10".toLong()
la source
str.toLongOrNull()
et d'autres méthodes de même nom sont également utiles si vous ne pouvez pas garantir que l'entrée sera formatée correctement. Avec ça, vous pouvez faire des choses commestr.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
Remarque: les réponses mentionnées
jet.String
sont obsolètes. Voici le Kotlin actuel (1.0):Tout
String
dans Kotlin a déjà une fonction d'extension que vous pouvez appelertoLong()
. Rien de spécial n'est nécessaire, utilisez-le simplement.Toutes les fonctions d'extension pour
String
sont documentées. Vous pouvez en trouver d'autres pour la bibliothèque standard dans la référence de l' APIla source
C'est intéressant. Code comme celui-ci:
rend cette sortie:
Je suppose que Kotlin effectue une conversion de
java.lang.Long
et longue primitive àkotlin.Long
automatiquement dans ce cas. Donc, c'est une solution, mais je serais heureux de voir l'outil sans l'utilisation du package java.lang.la source
En fait, 90% du temps, vous devez également vérifier que le `` long '' est valide, vous avez donc besoin de:
Il existe un équivalent «orNull» pour chaque «toLong» des types de base, et ceux-ci permettent de gérer les cas non valides en respectant le Kotlin? idiome.
la source
string.toLong ()
où
string
est votre variable.la source
Une bonne vieille possibilité Java qui n'est pas mentionnée dans les réponses est
java.lang.Long.decode(String)
.Chaînes décimales:
Kotlin
String.toLong()
est équivalent à JavaLong.parseLong(String)
:Chaînes non décimales:
Kotlin's
String.toLong(radix: Int)
est équivalent au eLong.parseLong(String, int)
de Java :Et voici
java.lang.Long.decode(String)
dans l'image:Cela signifie qu'il
decode
peut analyser des chaînes comme"0x412"
, où d'autres méthodes entraîneront un fichierNumberFormatException
.la source
Convertir un
String
enLong
(qui représente un entier signé 64 bits) dans Kotlin 1.3 est assez simple .Vous pouvez utiliser l'une des trois méthodes suivantes:
la source
Si vous ne voulez pas gérer
NumberFormatException
lors de l'analysela source
En fait, il existe plusieurs façons:
Donné:
Ensuite nous avons:
la source