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
nullsi 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
nullsi 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
Stringtiene un método de extensión correspondiente:fuente
Stringtienen una función de extensióntoLong(), así comotoInt()otros. Puedes usar estos. Quizás @ilya pueda actualizar esta respuesta a Kotlin actual (eliminarjet.Stringreferencia)Los métodos de extensión están disponibles para que
Strings 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.Stringestán desactualizadas. Aquí está el Kotlin actual (1.0):Cualquiera
Stringen 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
Stringestá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.Longprimitiva larga akotlin.Longautomá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
stringestá 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
decodepuede analizar cadenas como"0x412", donde otros métodos resultarán en aNumberFormatException.fuente
Convertir un
StringaLong(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
NumberFormatExceptionmientras analizafuente
En realidad, hay varias formas:
Dado:
Entonces nosotros tenemos:
fuente