Program Kotlin do sprawdzania, czy ciąg jest numeryczny

W tym programie nauczysz się różnych technik sprawdzania, czy łańcuch jest liczbowy, czy nie w Kotlinie.

Przykład 1: Sprawdź, czy ciąg jest liczbowy

 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") )

Po uruchomieniu programu wynik będzie następujący:

 12345s15 nie jest liczbą

W powyższym programie mamy Stringnazwany ciąg, który zawiera ciąg do sprawdzenia. Mamy również wartość liczbową logiczną, która przechowuje, czy wynik końcowy jest liczbowy, czy nie.

Aby sprawdzić, czy ciąg zawiera tylko cyfry, w bloku try, używamy Double„s parseDouble()metody do konwertowania ciąg do Double.

Jeśli zgłasza błąd (tj. NumberFormatExceptionBłąd), oznacza to, że łańcuch nie jest liczbą, a wartość numeryczna jest ustawiona na false. W przeciwnym razie to liczba.

Jeśli jednak chcesz sprawdzić, czy dla wielu ciągów musisz zmienić to na funkcję. Logika opiera się na rzucaniu wyjątków, może to być dość kosztowne.

Zamiast tego możemy użyć mocy wyrażeń regularnych, aby sprawdzić, czy łańcuch jest liczbowy, czy nie, jak pokazano poniżej.

Przykład 2: Sprawdź, czy ciąg jest liczbowy, czy nie używa wyrażeń regularnych (regex)

 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") )

Po uruchomieniu programu wynik będzie następujący:

 -1234,15 to liczba

W powyższym programie, zamiast używać bloku try-catch, używamy wyrażenia regularnego, aby sprawdzić, czy łańcuch jest numeryczny, czy nie. Odbywa się to za pomocą matches()metody Stringa.

W matches()metodzie

  • -?dopuszcza zero lub więcej -dla liczb ujemnych w ciągu.
  • \d+sprawdza, czy ciąg musi mieć co najmniej 1 lub więcej liczb ( \d).
  • (\.\d+)?zezwala na zero lub więcej podanego wzorca, (\.\d+)w którym
    • \.sprawdza, czy ciąg zawiera .(kropki dziesiętne), czy nie
    • Jeśli tak, powinna następować co najmniej jedna lub więcej cyfr \d+.

Oto odpowiednik kodu w Javie: Program w języku Java do sprawdzania, czy ciąg jest numeryczny, czy nie.

Interesujące artykuły...