Program Kotlin na kontrolu, či je reťazec číselný

V tomto programe sa naučíte rôzne techniky, ako skontrolovať, či je reťazec v Kotline číselný alebo nie.

Príklad 1: Skontrolujte, či je reťazec číselný

 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 spustení programu bude výstup:

 12345s15 nie je číslo

Vo vyššie uvedenom programe máme Stringpomenovaný reťazec, ktorý obsahuje reťazec, ktorý sa má skontrolovať. Máme tiež logickú hodnotu s číselnou hodnotou, ktorá ukladá, či je konečný výsledok číselný alebo nie.

Ak chcete zistiť, či reťazec obsahuje iba čísla v bloku try, používame Double, s parseDouble()metódu previesť reťazec na Double.

Ak vyhodí chybu (tj NumberFormatExceptionchybu), znamená to, že reťazec nie je číslo a číselná hodnota je nastavená na false. Inak je to číslo.

Ak však chcete skontrolovať, či je v prípade viacerých reťazcov potrebné zmeniť túto funkciu na funkčnú. Logika je založená na vyhadzovaní výnimiek, čo môže byť dosť drahé.

Namiesto toho môžeme pomocou sily regulárnych výrazov skontrolovať, či je reťazec číselný alebo nie, ako je uvedené nižšie.

Príklad 2: Skontrolujte, či je reťazec číselný alebo nepoužíva regulárne výrazy (regulárny výraz)

 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 spustení programu bude výstup:

 -1234,15 je číslo

Vo vyššie uvedenom programe namiesto použitia bloku try-catch používame regex na kontrolu, či je reťazec číselný alebo nie. To sa deje pomocou Stringovej matches()metódy.

V matches()metóde

  • -?umožňuje nulu alebo viac -pre záporné čísla v reťazci.
  • \d+skontroluje, či musí mať reťazec minimálne 1 alebo viac čísel ( \d).
  • (\.\d+)?umožňuje nulu alebo viac z daného vzoru, (\.\d+)v ktorom
    • \.skontroluje, či reťazec obsahuje .(desatinné čiarky) alebo nie
    • Ak áno, malo by za ním byť minimálne jedno alebo viac čísel \d+.

Tu je ekvivalentný kód Java: Program Java na kontrolu, či je reťazec číselný alebo nie.

Zaujímavé články...