Как конвертировать String в Long в Котлине?


Котлин вызов начался.

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

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

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

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

8 96

8 ответов:

1. string.toLong()

анализирует строку как [длинное] число и возвращает результат.

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

2. string.toLongOrNull()

анализирует строку как [длинное] число и возвращает результат или null если строка не является допустимым представлением число.

3. str.toLong(10)

анализирует строку как [длинное] число и возвращает результат.

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

@бросает IllegalArgumentException когда [радикс] не является допустимым основанием для преобразования строки в число.

public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))

4. string.toLongOrNull(10)

анализирует строку как [длинное] число и возвращает результат или null если строка не является допустимым представлением числа.

@бросает 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()

методы расширения доступны для Strings для разбора их на другие примитивные типы. Примеры ниже:

Примечание: ответы с упоминанием 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.использование пакета Лэнг.

на самом деле, 90% времени вам также нужно проверить "длинный" действителен, поэтому вам нужно:

"10".toLongOrNull()

существует эквивалент "orNull" для каждого "toLong" основных типов, и они позволяют управлять недопустимыми случаями с сохранением Котлина? идиома.

существует 5 различных способов преобразования String в Long на языке программирования Kotlin, которые представлены ниже:

  1. строку.предоставлением()
  2. строку.toLongOrNull ()
  3. строку.предоставлением(10)
  4. строку.toLongOrNull(10)
  5. java.ленг.Длинный.valueOf (string)

см. docs для объяснения в деталях.

строку.предоставлением()

здесь string - Это переменная.