Kotlin-programma om te controleren of een tekenreeks numeriek is

In dit programma leer je verschillende technieken om te controleren of een string numeriek is of niet in Kotlin.

Voorbeeld 1: controleer of een tekenreeks numeriek is

 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") )

Wanneer u het programma uitvoert, is de uitvoer:

 12345s15 is geen nummer

In het bovenstaande programma hebben we een Stringstring met de naam die de te controleren string bevat. We hebben ook een booleaanse waarde numeriek die opslaat of het eindresultaat numeriek is of niet.

Om te controleren of de string alleen getallen bevat, gebruiken we in het try-blok Doublede parseDouble()methode van om de string naar een Double.

Als het een fout genereert (dwz een NumberFormatExceptionfout), betekent dit dat de tekenreeks geen getal is en dat numeriek is ingesteld op false. Anders is het een nummer.

Als u echter wilt controleren of u dit voor een aantal strings moet wijzigen in een functie. En de logica is gebaseerd op het gooien van uitzonderingen, dit kan behoorlijk duur zijn.

In plaats daarvan kunnen we de kracht van reguliere expressies gebruiken om te controleren of de tekenreeks numeriek is of niet, zoals hieronder wordt weergegeven.

Voorbeeld 2: controleer of een tekenreeks numeriek is of geen reguliere expressies gebruikt (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") )

Wanneer u het programma uitvoert, is de uitvoer:

 -1234.15 is een nummer

In het bovenstaande programma gebruiken we in plaats van een try-catch-blok, regex om te controleren of de tekenreeks numeriek is of niet. Dit wordt gedaan met behulp van de String- matches()methode.

In de matches()methode,

  • -?staat nul of meer toe -voor negatieve getallen in de string.
  • \d+controleert of de string minstens 1 of meer cijfers moet hebben ( \d).
  • (\.\d+)?staat nul of meer van het gegeven patroon toe (\.\d+)waarin
    • \.controleert of de string .(decimalen) bevat of niet
    • Zo ja, dan moet het worden gevolgd door ten minste een of meer cijfers \d+.

Hier is de equivalente Java-code: Java-programma om te controleren of een tekenreeks numeriek is of niet.

Interessante artikelen...