Στο VBA, μπορείτε να συγκρίνετε δύο συμβολοσειρές χρησιμοποιώντας το Σαν χειριστή για να ελέγξει την αντιστοιχία των συμβολοσειρών. Σε αυτό το σεμινάριο, θα μάθετε πώς να χρησιμοποιείτε αυτόν τον τελεστή με διαφορετικά μοτίβα.
Αν θέλετε να μάθετε πώς να συγκρίνετε συμβολοσειρές στο VBA, κάντε κλικ εδώ: VBA Σύγκριση συμβολοσειρών - StrComp
Εάν θέλετε να μάθετε πώς να χρησιμοποιείτε τελεστές σύγκρισης, κάντε κλικ εδώ: Χειριστές σύγκρισης VBA - Δεν ισούται με & Περισσότερα
Χρήση του παρόχου Like για σύγκριση δύο συμβολοσειρών
Με τον τελεστή Like, μπορούμε να ελέγξουμε εάν μια συμβολοσειρά ξεκινά με ένα συγκεκριμένο κείμενο, το περιλαμβάνει κλπ. Από προεπιλογή, το Σαν Ο τελεστής συγκρίνει χαρακτήρες χρησιμοποιώντας τη δυαδική μέθοδο. Αυτό σημαίνει ότι ο χειριστής έχει διάκριση πεζών-κεφαλαίων. Αν θέλετε να το κάνετε χωρίς διάκριση πεζών-κεφαλαίων, πρέπει να βάλετε Επιλογή Σύγκριση κειμένου στην κορυφή της ενότητας σας. Χρησιμοποιώντας αυτή τη μέθοδο, το Σαν Ο χειριστής θεωρεί τα "S" και "s" τους ίδιους χαρακτήρες. Στα παραδείγματά μας, θα χρησιμοποιήσουμε την προεπιλεγμένη, διάκριση πεζών-κεφαλαίων.
Εάν υπάρχει αντιστοίχιση, το Σαν ο τελεστής επιστρέφει True ως αποτέλεσμα, ή False διαφορετικά.
Αρχικά, θα δούμε το απλό παράδειγμα όπου θέλουμε να ελέγξουμε αν ξεκινά η μεταβλητή συμβολοσειράς μας κύριοςΤο Για να το κάνετε αυτό, πρέπει να βάλετε έναν αστερίσκο (*) στο τέλος του κειμένου που ταιριάζει (Κύριος*). Εδώ είναι ο κωδικός:
1234567891011121314 | Sub LikeDemo ()Dim strName As StringDim blnResult As BooleanstrName = "Κύριος Μάικλ Τζέιμς"Αν strName Όπως "Mr*" ΤότεblnResult = ΑληθινόΑλλούblnResult = ΛάθοςΤέλος εανΤέλος υπο |
Σε αυτό το παράδειγμα, θέλουμε να ελέγξουμε εάν συμβολοσειρά strName ξεκινάει με κύριος και επιστρέφουμε Σωστό ή Λάθος στη μεταβλητή blnΑποτελεσμα.
Αρχικά, ορίζουμε την τιμή του strName προς το Κ. Michael James:
1 | strName = "Κύριος Μάικλ Τζέιμς" |
Στη συνέχεια χρησιμοποιούμε το Σαν τελεστής στη δήλωση If:
12345 | Αν strName Όπως "Mr*" ΤότεblnResult = ΑληθινόΑλλούblnResult = ΛάθοςΤέλος εαν |
Καθώς το strName ξεκινάει με κύριος, ο blnΑποτελεσμα επιστρέφει True:
Εικόνα 1. Χρησιμοποιώντας τον τελεστή Like, για να ελέγξετε εάν η συμβολοσειρά ξεκινά με συγκεκριμένους χαρακτήρες
Χρήση του παρόχου Like με διαφορετικά μοτίβα αντιστοίχισης
Ο τελεστής Like μπορεί να ελέγξει την αντιστοίχιση δύο συμβολοσειρών με βάση διαφορετικά μοτίβα. Ακολουθεί η λίστα με τα πιθανά μοτίβα αντιστοίχισης:
Κωδικός προτύπου |
Τύπος αντιστοίχισης |
* | Ταιριάζει με 0 ή περισσότερους χαρακτήρες |
? | Ταιριάζει με έναν μόνο χαρακτήρα |
# | Ταιριάζει με ένα μονοψήφιο |
[οστεοφυλάκιο] | Ταιριάζει με έναν μόνο χαρακτήρα από μια λίστα χαρακτήρων |
[Α-Ζ] | Ταιριάζει με κάθε κεφαλαίο χαρακτήρα από το αλφάβητο |
[Α-Ζα-ζ] | Ταιριάζει με οποιονδήποτε χαρακτήρα από το αλφάβητο |
[!οστεοφυλάκιο] | Ταιριάζει με έναν μόνο χαρακτήρα εξαιρώντας μια λίστα χαρακτήρων |
Τώρα μπορούμε να δούμε πώς να χρησιμοποιήσουμε αυτά τα μοτίβα στον κώδικα. Εδώ είναι το παράδειγμα για πολλά μοτίβα:
Αντιστοίχιση ενός μόνο χαρακτήρα:
1234567 | strText1 = "ABCDE"Αν strText1 Όπως "AB? DE" ΤότεblnResult1 = ΑληθινόΑλλούblnResult1 = ΛάθοςΤέλος εαν |
Αντιστοίχιση ενός ψηφίου:
1234567 | strText2 = "AB7DE"Αν strText2 Όπως "AB#DE" ΤότεblnResult2 = ΑλήθειαΑλλούblnResult2 = ΛάθοςΤέλος εαν |
Αντιστοίχιση οποιουδήποτε κεφαλαίου χαρακτήρα από το αλφάβητο:
1234567 | strText3 = "ABCDE"Αν strText3 Όπως "AB [A-Z] DE" ΤότεblnResult3 = ΑληθινόΑλλούblnResult3 = ΛάθοςΤέλος εαν |
Δεν ταιριάζει με κανένα κεφαλαίο χαρακτήρα από το αλφάβητο:
1234567 | strText4 = "AB7DE"Αν strText4 Όπως "AB [! A-Z] DE" ΤότεblnResult4 = ΑληθινόΑλλούblnResult4 = ΛάθοςΤέλος εαν |
Αντιστοίχιση οποιουδήποτε χαρακτήρα από το αλφάβητο (κεφαλαίο ή πεζό):
1234567 | strText5 = "ABcDE"Εάν strText5 Όπως "AB [A-Za-z] DE" ΤότεblnResult5 = ΑληθινόΑλλούblnResult5 = ΛάθοςΤέλος εαν |
Όταν εκτελείτε τον κώδικα, μπορείτε να δείτε ότι το Σαν ο τελεστής επιστρέφει True in blnΑποτελεσμα μεταβλητές για κάθε σύγκριση:
Εικόνα 2. Χρήση του τελεστή Like, με διαφορετικά μοτίβα αντιστοίχισης