Πώς να χρησιμοποιήσετε ένα RegExp για να επιβεβαιώσετε το τέλος μιας συμβολοσειράς σε JavaScript

Χρησιμοποιώντας τον κατασκευαστή Regexp? ️

Αυτό το άρθρο βασίζεται στη δέσμη ενεργειών του βασικού αλγορίθμου του FreeCodeCamp «Επιβεβαιώστε το τέλος».

Αυτή η πρόκληση περιλαμβάνει τον έλεγχο εάν μια συμβολοσειρά τελειώνει με μια συγκεκριμένη ακολουθία γραμμάτων ή όχι.

Σε αυτό το άρθρο, θα εξηγήσω πώς να το λύσετεπρόκληση χρησιμοποιώντας ένα RegExp.

Η ενδιαφέρουσα πτυχή αυτής της λύσης είναι η χρήση του κατασκευαστή RegExp για τη δημιουργία του συγκεκριμένου RegExp που πρέπει να ελέγξετε τις συμβολοσειρές που έχουν περάσει ως ορίσματα.

Πρόκληση αλγορίθμου

Ελέγξτε εάν μια συμβολοσειρά (πρώτο όρισμα, str) τελειώνει με τη δεδομένη συμβολοσειρά στόχου (δεύτερο όρισμα, target). Αυτή η πρόκληση μπορεί να επιλυθεί με τη .endsWith()μέθοδο, η οποία εισήχθη στο ES2015. Αλλά για τους σκοπούς αυτής της πρόκλησης, θα θέλαμε να χρησιμοποιήσετε μια από τις μεθόδους υποστρώματος JavaScript.

Παρέχονται δοκιμές

confirmEnding("Bastian", "n")πρέπει να επιστρέψει αληθινό. confirmEnding("Congratulation", "on")πρέπει να επιστρέψει αληθινό. confirmEnding("Connor", "n")πρέπει να επιστρέψει ψευδής. confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification")πρέπει να επιστρέψει ψευδής. confirmEnding("He has to give me a new name", "name")πρέπει να επιστρέψει αληθινό. confirmEnding("Open sesame", "same")πρέπει να επιστρέψει αληθινό. confirmEnding("Open sesame", "pen")πρέπει να επιστρέψει ψευδής. confirmEnding("Open sesame", "game")πρέπει να επιστρέψει ψευδής. confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain")πρέπει να επιστρέψει ψευδής. confirmEnding("Abstraction", "action")θα πρέπει να επιστρέψει true. Μην χρησιμοποιείτε την ενσωματωμένη μέθοδο .endsWith()για να λύσετε την πρόκληση.

1. Η πρώτη ιδέα που δεν λειτουργεί καθόλου

Εάν, όπως εγώ, είστε λάτρης του RexExp, η πρώτη σας προσπάθεια είναι να προσπαθήσετε να λύσετε την πρόκληση με τον παρακάτω κώδικα και δεν θα λειτουργήσει .

Ο λόγος είναι, με αυτήν τη σύνταξη, η συνάρτηση test () θα αναζητήσει τη συγκεκριμένη συμβολοσειρά "target" και όχι το "target" ως μεταβλητή που μεταβιβάστηκε ως όρισμα.

Εάν επιστρέψουμε στις δοκιμαστικές μας υποθέσεις, αυτές που πρέπει να επιστρέψουν «ψευδείς», περνούν, αλλά καμία από αυτές που πρέπει να επιστρέψει το «αληθινό» πέρασμα, κάτι που είναι αρκετά προβλέψιμο.

2. Λύστε την πρόκληση δημιουργώντας το συγκεκριμένο RegExp που χρειάζεστε με τον κατασκευαστή RegExp

Για να χρησιμοποιήσετε ένα RegExp που θα "καταλάβει" ότι το όρισμα "target" είναι μια μεταβλητή και όχι το "target" String, πρέπει να δημιουργήσετε ένα RegExp κατασκευασμένο από taylor χρησιμοποιώντας τον κατασκευαστή RegExp .

Και, προτού προχωρήσουμε, ας επιστρέψουμε για ένα λεπτό και να δούμε τι θέλουμε να δοκιμάσουμε: το όρισμα «στόχος» πρέπει να είναι το τέλος του επιχειρήματος «str». Αυτό σημαίνει ότι το RegExp θα πρέπει να τελειώνει με το χαρακτήρα "$" .

Τώρα, μπορούμε να λύσουμε αυτήν την πρόκληση σε τρία βήματα

Βήμα 1 - Δημιουργήστε μια μεταβλητή προσθέτοντας το "$" στο τέλος του ορίσματος "target", χρησιμοποιώντας τη μέθοδο concat () σε αυτήν την περίπτωση.

Βήμα 2 - Χρησιμοποιήστε τον κατασκευαστή RegExp και τον "νέο" τελεστή για να δημιουργήσετε το σωστό RexExp με την παραπάνω μεταβλητή.

Βήμα 3 - Επιστρέψτε το αποτέλεσμα της συνάρτησης δοκιμής ().

Και αυτό περνά όμορφα όλες τις δοκιμές περιπτώσεων;

Αυτό μπορεί να αναδιαμορφωθεί σε δύο γραμμές όπως αυτό

Σημείωση : δεδομένου ότι καμία από τις δοκιμαστικές περιπτώσεις δεν συνεπάγεται έλεγχο της κεφαλαιοποίησης των γραμμάτων, δεν χρειάζεται να χρησιμοποιήσετε τη σημαία "i".

Χρήσιμοι σύνδεσμοι

String.prototype.concat () σε MDN

RegExp.prototype.test () στο MDN

Κατασκευαστής RegExp στο MDN

Τακτικές εκφράσεις στο freeCodeCamp

Άλλες λύσεις σε αυτήν την πρόκληση

Η πρόκληση "Get a Hint" προτείνει μια λύση χρησιμοποιώντας τη μέθοδο slice () .

Μπορείτε να βρείτε δύο άλλους τρόπους επίλυσης αυτής της πρόκλησης, ένας με τη μέθοδο substr () και ο άλλος με τη μέθοδο endWith (), που εξηγείται από τη Sonya Moisset σε αυτό το άρθρο .

Αυτή η ad-hoc λύση RegExp μπορεί επίσης να σας βοηθήσει να επιλύσετε την πρόκληση "Αναζήτηση και αντικατάσταση" του σεναρίου FreeCodeCamp Intermediate Algorithm .

Ευχαριστούμε που το διαβάσατε!

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

Εάν έχετε μια αντίδραση / ερώτηση / πρόταση , φροντίστε να αφήσετε ένα σχόλιο παρακάτω . Θα χαρώ να διαβάσω από εσάς!

Μπορείτε επίσης να έρθετε σε επαφή ή / και να με ακολουθείτε στο Twitter .