Also, wegen fehlender Methoden Long.valueOf(String s)
stecke ich fest.
Wie konvertiere ich String in Long in Kotlin?
1. string.toLong()
Analysiert die Zeichenfolge als [lange] Zahl und gibt das Ergebnis zurück.
@throws NumberFormatException, wenn die Zeichenfolge keine gültige Darstellung einer Zahl ist.
2. string.toLongOrNull()
Analysiert die Zeichenfolge als [lange] Zahl und gibt das Ergebnis zurück oder
null
wenn die Zeichenfolge keine gültige Darstellung einer Zahl ist.
3. str.toLong(10)
Analysiert die Zeichenfolge als [lange] Zahl und gibt das Ergebnis zurück.
@throws NumberFormatException, wenn die Zeichenfolge keine gültige Darstellung einer Zahl ist.
@throws IllegalArgumentException, wenn [radix] kein gültiger Radix für die Konvertierung von Zeichenfolgen in Zahlen ist.
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4. string.toLongOrNull(10)
Analysiert die Zeichenfolge als [lange] Zahl und gibt das Ergebnis zurück oder
null
wenn die Zeichenfolge keine gültige Darstellung einer Zahl ist.@throws IllegalArgumentException, wenn [radix] kein gültiger Radix für die Konvertierung von Zeichenfolgen in Zahlen ist.
public fun String.toLongOrNull(radix: Int): Long? {...}
5. java.lang.Long.valueOf(string)
public static Long valueOf(String s) throws NumberFormatException
String
hat eine entsprechende Erweiterungsmethode:quelle
String
eine Erweiterungsfunktion habentoLong()
sowietoInt()
und andere. Sie können diese verwenden. Vielleicht kann @ilya diese Antwort auf den aktuellen Kotlin aktualisieren (jet.String
Referenz entfernen .)Für
String
s stehen Erweiterungsmethoden zur Verfügung , um sie in andere primitive Typen zu analysieren. Beispiele unten:"true".toBoolean()
"10.0".toFloat()
"10.0".toDouble()
"10".toByte()
"10".toShort()
"10".toInt()
"10".toLong()
quelle
str.toLongOrNull()
und andere ähnlich benannte Methoden sind ebenfalls nützlich, wenn Sie nicht garantieren können, dass die Eingabe korrekt formatiert wird. Damit können Siestr.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
Hinweis: Die erwähnten Antworten
jet.String
sind veraltet. Hier ist der aktuelle Kotlin (1.0):Jeder
String
in Kotlin hat bereits eine Erweiterungsfunktion, die Sie aufrufen könnentoLong()
. Es wird nichts Besonderes benötigt, verwenden Sie es einfach.Alle Erweiterungsfunktionen für
String
sind dokumentiert. Weitere für die Standardbibliothek finden Sie in der API-Referenzquelle
Es ist interessant. Code wie folgt:
macht diese Ausgabe:
Ich denke, Kotlin konvertiert in diesem Fall von
java.lang.Long
und lange primitiv zukotlin.Long
automatisch. Es ist also eine Lösung, aber ich würde mich freuen, ein Tool ohne die Verwendung des Pakets java.lang zu sehen.quelle
Tatsächlich ist in 90% der Fälle, in denen Sie auch überprüfen müssen, ob das "Long" gültig ist, Folgendes erforderlich:
Es gibt ein 'orNull'-Äquivalent für jeden' toLong 'der Grundtypen, und diese ermöglichen die Verwaltung ungültiger Fälle unter Einhaltung des Kotlin? Idiom.
quelle
string.toLong ()
Wo
string
ist deine Variable?quelle
Eine gute alte Java-Möglichkeit, die in den Antworten nicht erwähnt wird, ist
java.lang.Long.decode(String)
.Dezimalzeichenfolgen:
Kotlins
String.toLong()
entspricht JavaLong.parseLong(String)
:Nicht dezimale Zeichenfolgen:
Kotlins
String.toLong(radix: Int)
entspricht Javas eLong.parseLong(String, int)
:Und hier kommt
java.lang.Long.decode(String)
ins Bild:Das heißt, das
decode
kann Strings wie analysieren"0x412"
, wo andere Methoden zu a führenNumberFormatException
.quelle
Das Konvertieren eines
String
inLong
(das eine 64-Bit-Ganzzahl mit Vorzeichen darstellt) in Kotlin 1.3 ist recht einfach .Sie können eine der folgenden drei Methoden verwenden:
quelle
Wenn Sie
NumberFormatException
beim Parsen nicht damit umgehen möchtenquelle
Eigentlich gibt es mehrere Möglichkeiten:
Gegeben:
Dann haben wir:
quelle