Ebben a programban különböző technikákat tanulhat meg annak ellenőrzésére, hogy egy karaktersorozat numerikus-e vagy sem Kotlinban.
1. példa: Ellenőrizze, hogy egy karakterlánc numerikus-e
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") )
A program futtatásakor a kimenet a következő lesz:
Az 12345s15 nem szám
A fenti programban van egy String
megnevezett karakterlánc, amely tartalmazza az ellenőrizni kívánt karakterláncot. Van egy logikai érték numerikusunk is, amely tárolja, ha a végeredmény numerikus vagy nem.
Annak ellenőrzéséhez, hogy string tartalmazza a számok csak a try blokkban, az általunk használt Double
„s parseDouble()
módszer lehet átalakítani a karakterláncot Double
.
Ha hibát dob (azaz NumberFormatException
hiba), az azt jelenti, húr nem szám és numerikus van állítva false
. Egyébként ez egy szám.
Ha azonban szeretné ellenőrizni, hogy számos karaktersorozat esetén függvényre kell-e váltania. És a logika a kivételek dobásán alapul, ez elég drága lehet.
Ehelyett használhatjuk a reguláris kifejezések erejét annak ellenőrzésére, hogy a karakterlánc numerikus-e vagy sem, az alábbiak szerint.
2. példa: Ellenőrizze, hogy egy karakterlánc numerikus-e, vagy nem használ reguláris kifejezéseket (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") )
A program futtatásakor a kimenet a következő lesz:
-1234.15 egy szám
A fenti programban a try-catch blokk helyett regex segítségével ellenőrizzük, hogy a karakterlánc numerikus-e vagy sem. Ez String matches()
módszerével történik.
A matches()
módszerben
-?
nulla vagy annál többet-
engedélyez a karakterlánc negatív számai számára.\d+
ellenőrzi, hogy a karakterláncnak legalább 1 vagy több számmal kell rendelkeznie (\d
).(\.\d+)?
megengedi az adott minta nulla vagy annál nagyobb(\.\d+)
számát, amelyben\.
ellenőrzi, hogy a karakterlánc tartalmaz-e.
(tizedes pontokat) vagy sem- Ha igen, akkor legalább egy vagy több számot kell követnie
\d+
.
Itt van az egyenértékű Java-kód: Java-program annak ellenőrzésére, hogy egy karakterlánc numerikus-e vagy sem.