español - kotlin vs java
Cómo convertir String a Long en Kotlin? (7)
Kotlin Challenge ha comenzado.
Todas las tareas consisten en escribir un programa de consola que lea los parámetros de la consola y escriba los resultados en la consola para que sea posible la verificación automática.
el método principal en Kotlin parece
fun main(args: Array<String>): Unit {
//do something
}
La mayoría de los parámetros de entrada en las tareas deben interpretarse como números. Entonces, debido a la falta de métodos como Long.valueOf(String s)
me quedé atrapado. No puedo convertir String en Long y me siento avergonzado.
En realidad, el 90% del tiempo que también necesita verificar el ''largo'' es válido, por lo que necesita:
"10".toLongOrNull()
¿Existe un equivalente ''orNull'' para cada ''largo'' de los tipos básicos, y estos permiten administrar los casos no válidos manteniendo el Kotlin? idioma.
Es interesante. Código así:
val num = java.lang.Long.valueOf("2");
println(num);
println(num is kotlin.Long);
hace esta salida:
2
true
Supongo que Kotlin hace la conversión de java.lang.Long
y long primitive a kotlin.Long
automáticamente en este caso. Por lo tanto, es una solución, pero me gustaría ver la herramienta sin el uso del paquete java.lang.
Los métodos de extensión están disponibles para String
s para analizarlos en otros tipos primitivos. Ejemplos a continuación:
String
tiene un método de extensión correspondiente:
"10".toLong()
Nota: Las respuestas que mencionan jet.String
están desactualizadas. Aquí está Kotlin actual (1.0):
Cualquier String
en Kotlin ya tiene una función de extensión a la que puede llamar a toLong()
. No se necesita nada especial, solo úsala.
Todas las funciones de extensión para String
están documentadas. Puede encontrar otros para lib estándar en la referencia api
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 [raíz] no es una base 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 [raíz] no es una base 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.toLong()
donde la string
es tu variable.