Então, devido à falta de métodos como Long.valueOf(String s)
eu estou preso.
Como converter String para Long no Kotlin?
1 string.toLong()
Analisa a string como um número [Long] e retorna o resultado.
@throws NumberFormatException se a sequência não for uma representação válida de um número.
2) string.toLongOrNull()
Analisa a string como um número [Long] e retorna o resultado ou
null
se a string não é uma representação válida de um número.
3) str.toLong(10)
Analisa a string como um número [Long] e retorna o resultado.
@throws NumberFormatException se a sequência não for uma representação válida de um número.
@throws IllegalArgumentException quando [radix] não é um radical válido para conversão de string em número.
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4) string.toLongOrNull(10)
Analisa a string como um número [Long] e retorna o resultado ou
null
se a string não é uma representação válida de um número.@throws IllegalArgumentException quando [radix] não é um radical válido para conversão de string em número.
public fun String.toLongOrNull(radix: Int): Long? {...}
5) java.lang.Long.valueOf(string)
public static Long valueOf(String s) throws NumberFormatException
String
possui um método de extensão correspondente:fonte
String
têm uma função de extensãotoLong()
, bem comotoInt()
, entre outros. Você pode usá-los. Talvez @ilya pode atualizar esta resposta para Kotlin atual (removejet.String
referência.)Os métodos de extensão estão disponíveis para
String
s para analisá-los em outros tipos primitivos. Exemplos abaixo:"true".toBoolean()
"10.0".toFloat()
"10.0".toDouble()
"10".toByte()
"10".toShort()
"10".toInt()
"10".toLong()
fonte
str.toLongOrNull()
e outros métodos com nomes semelhantes também serão úteis se você não puder garantir que a entrada será formatada corretamente. Com isso você pode fazer coisas comostr.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
Nota: As respostas mencionadas
jet.String
estão desatualizadas. Aqui está o Kotlin atual (1.0):Qualquer pessoa
String
no Kotlin já possui uma função de extensão que você pode chamartoLong()
. Nada de especial é necessário, basta usá-lo.Todas as funções de extensão para
String
estão documentadas. Você pode encontrar outras pessoas para a lib padrão na referência da APIfonte
É interessante. Código como este:
faz esta saída:
Eu acho que Kotlin faz a conversão de
java.lang.Long
e longo primitivo parakotlin.Long
automaticamente neste caso. Portanto, é uma solução, mas eu ficaria feliz em ver a ferramenta sem o uso do pacote java.lang.fonte
Na verdade, 90% das vezes você também precisa verificar o 'long' é válido, então você precisa:
Existe um equivalente 'orNull' para cada 'toLong' dos tipos básicos, e eles permitem gerenciar casos inválidos de acordo com o Kotlin? idioma.
fonte
string.toLong ()
Onde
string
está sua variável?fonte
Uma boa e antiga possibilidade de Java que não é mencionada nas respostas é
java.lang.Long.decode(String)
.Sequências decimais:
O Kotlin's
String.toLong()
é equivalente ao JavaLong.parseLong(String)
:Strings não decimais:
O Kotlin's
String.toLong(radix: Int)
é equivalente ao eLong.parseLong(String, int)
: do JavaE aqui entra
java.lang.Long.decode(String)
em cena:Isso significa que
decode
pode analisar Strings como"0x412"
, onde outros métodos resultarão em aNumberFormatException
.fonte
Converter um
String
paraLong
(que representa um número inteiro assinado de 64 bits) no Kotlin 1.3 é bastante simples .Você pode usar qualquer um dos três métodos a seguir:
fonte
Se você não quiser manipular
NumberFormatException
enquanto estiver analisandofonte
Na verdade, existem várias maneiras:
Dado:
Então nós temos:
fonte