Entonces, debido a la falta de métodos como Long.valueOf(String s)
estoy atascado.
¿Cómo convertir una cuerda a larga en Kotlin?
1) string.toLong()
Analiza la cadena como un número [Largo] y devuelve el resultado.
@throws NumberFormatException si la cadena no es una representación válida de un número.
2) string.toLongOrNull()
Analiza la cadena como un número [Largo] y devuelve el resultado o
null
si la cadena no es una representación válida de un número.
3) str.toLong(10)
Analiza la cadena como un número [Largo] y devuelve el resultado.
@throws NumberFormatException si la cadena no es una representación válida de un número.
@throws IllegalArgumentException cuando [radix] no es una raíz válida para la conversión de cadena a número.
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4) string.toLongOrNull(10)
Analiza la cadena como un número [Largo] y devuelve el resultado o
null
si la cadena no es una representación válida de un número.@throws IllegalArgumentException cuando [radix] no es una raíz válida para la conversión de cadena a número.
public fun String.toLongOrNull(radix: Int): Long? {...}
5) java.lang.Long.valueOf(string)
public static Long valueOf(String s) throws NumberFormatException
String
tiene un método de extensión correspondiente:fuente
String
tienen una función de extensióntoLong()
, así comotoInt()
otros. Puedes usar estos. Quizás @ilya pueda actualizar esta respuesta a Kotlin actual (eliminarjet.String
referencia)Los métodos de extensión están disponibles para que
String
s los analice en otros tipos primitivos. Ejemplos a continuación:"true".toBoolean()
"10.0".toFloat()
"10.0".toDouble()
"10".toByte()
"10".toShort()
"10".toInt()
"10".toLong()
fuente
str.toLongOrNull()
y otros métodos con nombres similares también son útiles si no puede garantizar que la entrada se formateará correctamente. Con esto puedes hacer cosas comostr.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
Nota: Las respuestas que mencionan
jet.String
están desactualizadas. Aquí está el Kotlin actual (1.0):Cualquiera
String
en Kotlin ya tiene una función de extensión a la que puede llamartoLong()
. No se necesita nada especial, solo úselo.Todas las funciones de extensión
String
están documentadas. Puede encontrar otros para lib estándar en la referencia de la APIfuente
Es interesante. Código como este:
hace esta salida:
Supongo que Kotlin hace una conversión desde
java.lang.Long
primitiva larga akotlin.Long
automática en este caso. Entonces, es la solución, pero me encantaría ver la herramienta sin el uso del paquete java.lang.fuente
En realidad, el 90% de las veces que también necesita verificar el 'largo' es válido, por lo que necesita:
¿Hay un equivalente 'o Nulo' para cada 'toLong' de los tipos básicos, y estos permiten gestionar casos no válidos con Kotlin? idioma.
fuente
string.toLong ()
¿Dónde
string
está tu variable?fuente
Una buena posibilidad de Java que no se menciona en las respuestas es
java.lang.Long.decode(String)
.Cuerdas Decimales:
Kotlin
String.toLong()
es equivalente a JavaLong.parseLong(String)
:Cadenas no decimales:
Kotlin
String.toLong(radix: Int)
es equivalente a eLong.parseLong(String, int)
de Java :Y aquí entra
java.lang.Long.decode(String)
en escena:Eso significa que
decode
puede analizar cadenas como"0x412"
, donde otros métodos resultarán en aNumberFormatException
.fuente
Convertir un
String
aLong
(que representa un entero con signo de 64 bits) en Kotlin 1.3 es bastante simple .Puede usar cualquiera de los siguientes tres métodos:
fuente
Si no desea manejar
NumberFormatException
mientras analizafuente
En realidad, hay varias formas:
Dado:
Entonces nosotros tenemos:
fuente