Program Kotlin ke kontrole, zda je řetězec číselný

V tomto programu se naučíte různé techniky, jak zkontrolovat, zda je řetězec v Kotlinu číselný či nikoli.

Příklad 1: Zkontrolujte, zda je řetězec čí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") )

Když spustíte program, výstup bude:

 12345s15 není číslo

Ve výše uvedeném programu máme Stringpojmenovaný řetězec, který obsahuje řetězec, který má být zkontrolován. Máme také booleovskou číselnou hodnotu, která ukládá, pokud je konečný výsledek číselný nebo ne.

Chcete-li zjistit, zda řetězec obsahuje pouze čísla v bloku try, používáme Double‚s parseDouble()metodu převést řetězec na Double.

Pokud vyvolá chybu (tj. NumberFormatExceptionChybu), znamená to, že řetězec není číslo a číselná hodnota je nastavena na false. Jinak je to číslo.

Pokud však chcete zkontrolovat, zda u řady řetězců budete muset změnit funkci. Logika je založena na házení výjimek, což může být docela drahé.

Místo toho můžeme použít sílu regulárních výrazů ke kontrole, zda je řetězec číselný nebo ne, jak je znázorněno níže.

Příklad 2: Zkontrolujte, zda je řetězec numerický nebo nepoužívá regulární výrazy (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") )

Když spustíte program, výstup bude:

 -1234,15 je číslo

Ve výše uvedeném programu namísto použití bloku try-catch použijeme regex ke kontrole, zda je řetězec číselný nebo ne. To se provádí pomocí Stringovy matches()metody.

V matches()metodě

  • -?umožňuje nula nebo více -záporných čísel v řetězci.
  • \d+zkontroluje, zda řetězec musí obsahovat alespoň 1 nebo více čísel ( \d).
  • (\.\d+)?umožňuje nulu nebo více z daného vzoru, (\.\d+)ve kterém
    • \.zkontroluje, zda řetězec obsahuje .(desetinná místa) nebo ne
    • Pokud ano, mělo by následovat alespoň jedno nebo více čísel \d+.

Tady je ekvivalentní kód Java: Program Java ke kontrole, zda je řetězec číselný nebo ne.

Zajímavé články...