În acest program, veți învăța diferite tehnici pentru a verifica dacă un șir este numeric sau nu în Kotlin.
Exemplul 1: verificați dacă un șir este numeric
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") )
Când rulați programul, ieșirea va fi:
12345s15 nu este un număr
În programul de mai sus, avem un String
șir denumit care conține șirul care trebuie verificat. De asemenea, avem o valoare booleană numerică care stochează dacă rezultatul final este numeric sau nu.
Pentru a verifica dacă șirul conține doar numere, în blocul try, vom folosi Double
e parseDouble()
metoda de a converti șirul de la o Double
.
Dacă aruncă o eroare (adică NumberFormatException
eroare), înseamnă că șirul nu este un număr și numeric este setat la false
. Altfel, este un număr.
Cu toate acestea, dacă doriți să verificați dacă, pentru un număr de șiruri, ar trebui să îl schimbați într-o funcție. Și, logica se bazează pe aruncarea de excepții, acest lucru poate fi destul de scump.
În schimb, putem folosi puterea expresiilor regulate pentru a verifica dacă șirul este numeric sau nu așa cum se arată mai jos.
Exemplul 2: verificați dacă un șir este numeric sau nu utilizând expresii regulate (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") )
Când rulați programul, ieșirea va fi:
-1234.15 este un număr
În programul de mai sus, în loc să folosim un bloc try-catch, folosim regex pentru a verifica dacă șirul este numeric sau nu. Acest lucru se face folosind matches()
metoda lui String .
În matches()
metodă,
-?
permite zero sau mai mult-
pentru numerele negative din șir.\d+
verifică șirul trebuie să aibă cel puțin 1 sau mai multe numere (\d
).(\.\d+)?
permite zero sau mai multe din modelul dat(\.\d+)
în care\.
verifică dacă șirul conține.
(puncte zecimale) sau nu- Dacă da, ar trebui să fie urmat de cel puțin unul sau mai multe numere
\d+
.
Iată codul Java echivalent: program Java pentru a verifica dacă un șir este numeric sau nu.