Πρόγραμμα Kotlin για έλεγχο εάν μια συμβολοσειρά είναι αριθμητική

Σε αυτό το πρόγραμμα, θα μάθετε διαφορετικές τεχνικές για να ελέγξετε αν μια συμβολοσειρά είναι αριθμητική ή όχι στο Kotlin.

Παράδειγμα 1: Ελέγξτε εάν μια συμβολοσειρά είναι αριθμητική

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

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Το 12345s15 δεν είναι αριθμός

Στο παραπάνω πρόγραμμα, έχουμε μια Stringονομαστική συμβολοσειρά που περιέχει τη συμβολοσειρά που πρέπει να ελεγχθεί. Έχουμε επίσης μια αριθμητική τιμή boolean που αποθηκεύει εάν το τελικό αποτέλεσμα είναι αριθμητικό ή όχι.

Για να ελέγξουμε αν η συμβολοσειρά περιέχει μόνο αριθμούς, στο μπλοκ δοκιμής, χρησιμοποιούμε Doubleτη parseDouble()μέθοδο για τη μετατροπή της συμβολοσειράς σε α Double.

Εάν ρίξει ένα σφάλμα (δηλ. NumberFormatExceptionΣφάλμα), αυτό σημαίνει ότι η συμβολοσειρά δεν είναι αριθμός και ο αριθμητικός έχει οριστεί σε false. Αλλιώς, είναι ένας αριθμός.

Ωστόσο, εάν θέλετε να ελέγξετε εάν, για μια σειρά συμβολοσειρών, θα πρέπει να την αλλάξετε σε μια συνάρτηση. Και, η λογική βασίζεται σε ρίψεις εξαιρέσεων, αυτό μπορεί να είναι αρκετά ακριβό.

Αντ 'αυτού, μπορούμε να χρησιμοποιήσουμε τη δύναμη των κανονικών εκφράσεων για να ελέγξουμε εάν η συμβολοσειρά είναι αριθμητική ή όχι όπως φαίνεται παρακάτω.

Παράδειγμα 2: Ελέγξτε εάν μια συμβολοσειρά είναι αριθμητική ή δεν χρησιμοποιεί κανονικές εκφράσεις (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") )

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 -1234.15 είναι ένας αριθμός

Στο παραπάνω πρόγραμμα, αντί να χρησιμοποιήσουμε ένα μπλοκ try-catch, χρησιμοποιούμε το regex για να ελέγξουμε αν η συμβολοσειρά είναι αριθμητική ή όχι. Αυτό γίνεται χρησιμοποιώντας τη matches()μέθοδο του String .

Στη matches()μέθοδο,

  • -?επιτρέπει μηδέν ή περισσότερους -για αρνητικούς αριθμούς στη συμβολοσειρά.
  • \d+ελέγχει τη συμβολοσειρά πρέπει να έχει τουλάχιστον 1 ή περισσότερους αριθμούς ( \d)
  • (\.\d+)?επιτρέπει μηδέν ή περισσότερο του δεδομένου μοτίβου (\.\d+)στο οποίο
    • \.ελέγχει εάν η συμβολοσειρά περιέχει .(δεκαδικά σημεία) ή όχι
    • Εάν ναι, πρέπει να ακολουθείται από τουλάχιστον έναν ή περισσότερους αριθμούς \d+.

Εδώ είναι ο ισοδύναμος κώδικας Java: Πρόγραμμα Java για να ελέγξετε αν μια συμβολοσειρά είναι αριθμητική ή όχι.

ενδιαφέροντα άρθρα...