Как преобразовать String в Long в Kotlin?

Kotlin Challenge начата.

Все задачи состоят в том, чтобы написать консольную программу, которая считывает параметры с консоли и записывает выходные данные на консоль, чтобы сделать автоматическую проверку возможной.

главный метод в Котлин выглядит

fun main(args: Array<String>): Unit { //do something } 

Большинство входных параметров в задачах следует интерпретировать как числа. Поэтому из-за отсутствия таких методов, как Long.valueOf(String s) я просто застрял. Я не могу преобразовать String в Long и мне стыдно.

1. string.toLong()

Разбирает строку как [Long] и возвращает результат.

@throws NumberFormatException, если строка не является допустимым представлением числа.

2. string.toLongOrNull()

Разбирает строку как [длинное] число и возвращает результат или 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)

Разбирает строку как [длинное] число и возвращает результат или 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 имеет соответствующий метод расширения:

 "10".toLong() 

Для String s доступны методы расширения, чтобы проанализировать их на другие примитивные типы. Примеры ниже:

  • "true".toBoolean()
  • "10.0".toFloat()
  • "10.0".toDouble()
  • "10".toByte()
  • "10".toShort()
  • "10".toInt()
  • "10".toLong()

Примечание. Ответы на упоминание jet.String устарели. Вот текущий Котлин (1.0):

Любая String в Kotlin уже имеет функцию расширения, которую вы можете вызвать toLong() . Ничего особенного не нужно, просто используйте его.

Все функции расширения для String документированы. Вы можете найти других для стандартного lib в ссылке api

Это интересно. Код:

 val num = java.lang.Long.valueOf("2"); println(num); println(num is kotlin.Long); 

делает этот вывод:

 2 true 

Думаю, Котлин делает преобразование из java.lang.Long и длинный примитив к kotlin.Long автоматически в этом случае. Итак, это решение, но я был бы рад увидеть инструмент без использования java.lang.

Фактически, 90% времени, когда вам нужно также проверить «длинный», действительно, так что вам нужно:

 "10".toLongOrNull() 

Существует эквивалент «orNull» для каждого «toLong» базовых типов, и это позволяет управлять недействительными случаями с сохранением Kotlin? идиома.