Итак, из-за отсутствия методов, как Long.valueOf(String s)
я застрял.
Как конвертировать String в Long в Kotlin?
1. string.toLong()
Разбирает строку как [Long] число и возвращает результат.
@throws NumberFormatException, если строка не является допустимым представлением числа.
2. string.toLongOrNull()
Анализирует строку как число [Long] и возвращает результат или,
null
если строка не является допустимым представлением числа.
3. str.toLong(10)
Разбирает строку как [Long] число и возвращает результат.
@throws NumberFormatException, если строка не является допустимым представлением числа.
@throws IllegalArgumentException, когда [radix] не является допустимым основанием для преобразования строки в число.
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4. string.toLongOrNull(10)
Анализирует строку как число [Long] и возвращает результат или,
null
если строка не является допустимым представлением числа.@throws IllegalArgumentException, когда [radix] не является допустимым основанием для преобразования строки в число.
public fun String.toLongOrNull(radix: Int): Long? {...}
5. java.lang.Long.valueOf(string)
public static Long valueOf(String s) throws NumberFormatException
String
имеет соответствующий метод расширения:источник
String
есть функция расширения,toLong()
какtoInt()
и у других. Вы можете использовать это. Возможно, @ilya может обновить этот ответ для текущего Kotlin (удалитьjet.String
ссылку.)Методы расширения доступны для
String
s, чтобы анализировать их в другие примитивные типы. Примеры ниже:"true".toBoolean()
"10.0".toFloat()
"10.0".toDouble()
"10".toByte()
"10".toShort()
"10".toInt()
"10".toLong()
источник
str.toLongOrNull()
и другие методы с аналогичными именами также полезны, если вы не можете гарантировать, что ввод будет отформатирован правильно. С этим вы можете делать такие вещи, какstr.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
Примечание: упоминания ответов
jet.String
устарели. Вот текущий Котлин (1.0):Любой
String
в Котлине уже имеет функцию расширения, которую вы можете вызватьtoLong()
. Ничего особенного не нужно, просто используйте его.Все функции расширения для
String
задокументированы. Вы можете найти другие для стандартной библиотеки в справочнике APIисточник
Это интересно. Код как это:
делает этот вывод:
Я предполагаю, что Kotlin делает преобразование из
java.lang.Long
и долго примитивным вkotlin.Long
автоматическое в этом случае. Итак, это решение, но я был бы рад увидеть инструмент без использования пакета java.lang.источник
На самом деле, в 90% случаев вам также нужно проверить «long», так что вам нужно:
Существует эквивалент orNull для каждого «toLong» базовых типов, и они позволяют управлять недействительными случаями в соответствии с Kotlin? идиома.
источник
string.toLong ()
где
string
ваша переменнаяисточник
Одна хорошая старая возможность Java, что не упомянуто в ответах
java.lang.Long.decode(String)
.Десятичные строки:
Котлин
String.toLong()
эквивалентен JavaLong.parseLong(String)
:Недесятичные строки:
Котлин
String.toLong(radix: Int)
эквивалентен Java- еLong.parseLong(String, int)
:И тут
java.lang.Long.decode(String)
на снимке появляется:Это означает, что
decode
может анализировать строки как"0x412"
, где другие методы приведут кNumberFormatException
.источник
Преобразовать
String
вLong
(который представляет 64-разрядное целое число со знаком) в Kotlin 1.3 довольно просто .Вы можете использовать любой из следующих трех методов:
источник
Если вы не хотите обрабатывать
NumberFormatException
при разбореисточник
На самом деле, есть несколько способов:
Дано:
Тогда мы имеем:
источник