В этой программе вы изучите различные методы проверки, является ли строка числовой или нет в Kotlin.
Пример 1. Проверьте, является ли строка числовой.
import java.lang.Double.parseDouble fun main(args: Array) ( val string = "12345s15" var numeric = true try ( val num = parseDouble(string) ) catch (e: NumberFormatException) ( numeric = false ) if (numeric) println("$string is a number") else println("$string is not a number") )
Когда вы запустите программу, вывод будет:
12345s15 - это не число
В приведенной выше программе у нас есть String
именованная строка, содержащая проверяемую строку. У нас также есть логическое значение numeric, которое сохраняет, является ли окончательный результат числовым или нет.
Для того, чтобы проверить , если строка содержит только цифры, в блоке попробовать, мы используем Double
«s parseDouble()
метод , чтобы преобразовать строку в Double
.
Если он вызывает ошибку (т.е. NumberFormatException
ошибку), это означает, что строка не является числом, а для числового значения установлено значение false
. В противном случае это число.
Однако, если вы хотите проверить, нужно ли для ряда строк изменить его на функцию. И логика основана на выдаче исключений, это может быть довольно дорого.
Вместо этого мы можем использовать возможности регулярных выражений, чтобы проверить, является ли строка числовой или нет, как показано ниже.
Пример 2: проверьте, является ли строка числовой или не использует регулярные выражения (регулярное выражение)
fun main(args: Array) ( val string = "-1234.15" var numeric = true numeric = string.matches("-?\d+(\.\d+)?".toRegex()) if (numeric) println("$string is a number") else println("$string is not a number") )
Когда вы запустите программу, вывод будет:
-1234.15 - это число
В приведенной выше программе вместо использования блока try-catch мы используем регулярное выражение, чтобы проверить, является ли строка числовой или нет. Это делается с помощью matches()
метода String .
В matches()
методе
-?
допускает ноль или более-
отрицательных чисел в строке.\d+
проверяет, что в строке должно быть хотя бы 1 или более чисел (\d
).(\.\d+)?
допускает ноль или более заданного шаблона,(\.\d+)
в котором\.
проверяет, содержит ли строка.
(десятичные точки) или нет- Если да, за ним должно быть указано хотя бы одно или несколько чисел
\d+
.
Вот эквивалентный код Java: программа на Java для проверки, является ли строка числовой.