В тази програма ще научите различни техники, за да проверите дали низът е цифров или не в 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
именуван низ, който съдържа низ, който трябва да бъде проверен. Имаме и булева стойност числова, която съхранява, ако крайният резултат е числов или не.
За да проверите дали низ съдържа само цифри, в блока опит, ние използваме Double
е 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, използваме регулярно изражение, за да проверим дали низът е цифров или не. Това се прави по метода на String matches()
.
В matches()
метода,
-?
позволява нула или повече-
за отрицателни числа в низа.\d+
проверява, че низът трябва да има поне 1 или повече числа (\d
).(\.\d+)?
позволява нула или повече от дадения модел,(\.\d+)
в който\.
проверява дали низът съдържа.
(десетични точки) или не- Ако отговорът е „да“, той трябва да бъде последван от поне едно или повече числа
\d+
.
Ето еквивалентния Java код: Java програма за проверка дали низът е цифров или не.