Kotlin program annak ellenőrzésére, hogy egy karakterlánc numerikus-e

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 Stringmegnevezett 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 NumberFormatExceptionhiba), 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.

érdekes cikkek...