Kotlin-ohjelma tarkistaa, onko merkkijono numeerinen

Tässä ohjelmassa opit erilaisia ​​tekniikoita tarkistaaksesi, onko merkkijono numeerinen vai ei Kotlinissa.

Esimerkki 1: Tarkista, onko merkkijono numeerinen

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

Kun suoritat ohjelmaa, tulos on:

 12345s15 ei ole numero

Yllä olevassa ohjelmassa meillä on Stringnimetty merkkijono, joka sisältää tarkistettavan merkkijonon. Meillä on myös looginen arvo numeerinen, joka tallentaa, jos lopputulos on numeerinen vai ei.

Tarkistaa, jos merkkijono sisältää vain numeroita, että yrittää estää, käytämme Doublen parseDouble()menetelmää muuntaa merkkijonon Double.

Jos se heittää virheen (eli NumberFormatExceptionvirheen), se tarkoittaa, että merkkijono ei ole numero ja numero on asetettu false. Muuten, se on numero.

Jos kuitenkin haluat tarkistaa, onko sinun jouduttava muutamaan merkkijonoa funktioksi. Ja logiikka perustuu heittää poikkeuksia, se voi olla melko kallista.

Sen sijaan voimme käyttää säännöllisten lausekkeiden voimaa tarkistaa, onko merkkijono numeerinen vai ei, kuten alla on esitetty.

Esimerkki 2: Tarkista, onko merkkijono numeerinen vai ei, käytäkö säännöllisiä lausekkeita (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") )

Kun suoritat ohjelmaa, tulos on:

 -1234.15 on luku

Yllä olevassa ohjelmassa yritämme kiinni-lohkon sijasta käyttää regexiä tarkistaaksemme, onko merkkijono numeerinen vai ei. Tämä tehdään Stringin matches()menetelmällä.

Tässä matches()menetelmässä,

  • -?sallii nollan tai enemmän -merkkijonon negatiivisille numeroille.
  • \d+tarkistaa, että merkkijonossa on oltava vähintään yksi tai useampi numero ( \d).
  • (\.\d+)?sallii nollan tai enemmän annetusta kuviosta (\.\d+), jossa
    • \.tarkistaa, sisältääkö merkkijono .(desimaalipisteitä) vai ei
    • Jos kyllä, sen jälkeen tulee olla vähintään yksi tai useampi numero \d+.

Tässä on vastaava Java-koodi: Java-ohjelma tarkistaa, onko merkkijono numeerinen vai ei.

Mielenkiintoisia artikkeleita...