Kotlini programm, et kontrollida, kas string on numbriline

Selles programmis saate teada erinevaid tehnikaid, et kontrollida, kas string on Kotlinis arvuline või mitte.

Näide 1: kontrollige, kas string on numbriline

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

Programmi käivitamisel on väljund järgmine:

 12345s15 ei ole number

Ülaltoodud programmis on meil Stringnimeline string, mis sisaldab kontrollitavat stringi. Meil on ka boolean väärtusarv, mis salvestatakse, kui lõpptulemus on arvuline või mitte.

Kontrollimaks, kas string sisaldab ainult numbreid, et proovida blokeerida, me kasutame Double's parseDouble()meetod teisendada stringi Double.

Kui see viskab vea (st NumberFormatExceptionviga), tähendab see, et string pole arv ja numbriline on seatud väärtusele false. Muidu, see on number.

Kui soovite siiski kontrollida, kas peate mõne stringi jaoks selle funktsiooni muutma. Ja loogika põhineb erandite viskamisel, see võib olla üsna kallis.

Selle asemel võime kasutada regulaaravaldiste jõudu, et kontrollida, kas string on numbriline või mitte, nagu allpool näidatud.

Näide 2: kontrollige, kas string on numbriline või ei kasuta regulaaravaldisi (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") )

Programmi käivitamisel on väljund järgmine:

 -1234.15 on arv

Ülaltoodud programmis kasutame proovimise püüdmise ploki asemel regexi, et kontrollida, kas string on arvuline või mitte. Seda tehakse Stringi matches()meetodil.

In matches()meetodit,

  • -?lubab -stringi negatiivsete arvude korral nulli või rohkem .
  • \d+kontrollib, et stringil peab olema vähemalt 1 või enam numbrit ( \d).
  • (\.\d+)?võimaldab nulli või enamat antud mustrist (\.\d+), milles
    • \.kontrollib, kas string sisaldab .(kümnendkoha täpsust) või mitte
    • Kui jah, peaks sellele järgnema vähemalt üks või mitu numbrit \d+.

Siin on samaväärne Java-kood: Java-programm, et kontrollida, kas string on numbriline või mitte.

Huvitavad Artiklid...