Kotlin-programmet för att kontrollera om en sträng är numerisk

I det här programmet lär du dig olika tekniker för att kontrollera om en sträng är numerisk eller inte i Kotlin.

Exempel 1: Kontrollera om en sträng är numerisk

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

När du kör programmet blir resultatet:

 12345s15 är inte ett nummer

I ovanstående program har vi en Stringnamngiven sträng som innehåller strängen som ska kontrolleras. Vi har också ett booleskt värde som lagras om slutresultatet är numeriskt eller inte.

För att kontrollera om strängen innehåller endast siffror i try blocket använder vi Doubleär parseDouble()metod för att konvertera strängen till en Double.

Om det ger ett fel (dvs. NumberFormatExceptionfel) betyder det att sträng inte är ett tal och att numeriskt är satt till false. Annars är det ett nummer.

Men om du vill kontrollera om det för ett antal strängar måste du ändra det till en funktion. Och logiken är baserad på kastande undantag, det kan vara ganska dyrt.

Istället kan vi använda kraften i reguljära uttryck för att kontrollera om strängen är numerisk eller inte som visas nedan.

Exempel 2: Kontrollera om en sträng är numerisk eller inte använder reguljära uttryck (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") )

När du kör programmet blir resultatet:

 -1234,15 är ett tal

I programmet ovan använder vi regex för att kontrollera om strängen är numerisk eller inte i stället för att använda ett försök-fångstblock. Detta görs med Strings matches()metod.

I matches()metoden,

  • -?tillåter noll eller mer -för negativa tal i strängen.
  • \d+kontrollerar att strängen måste ha minst 1 eller fler nummer ( \d).
  • (\.\d+)?tillåter noll eller mer av det angivna mönstret (\.\d+)i vilket
    • \.kontrollerar om strängen innehåller .(decimaler) eller inte
    • Om ja, bör det följas av minst ett eller flera siffror \d+.

Här är motsvarande Java-kod: Java-program för att kontrollera om en sträng är numerisk eller inte.

Intressanta artiklar...