A RegExp használata a String végződésének megerősítéséhez a JavaScript-ben

A Regexp? ️ konstruktor használata

Ez a cikk a freeCodeCamp alapvető algoritmus-szkriptjein alapszik: „Vége megerősítése”.

Ez a kihívás magában foglalja annak ellenőrzését, hogy egy karakterlánc egy adott betűsorral zárul-e vagy sem.

Ebben a cikkben elmagyarázom, hogyan lehet ezt megoldanikihívás egy RegExp használatával.

A megoldás érdekes szempontja, hogy a RegExp konstruktor segítségével hozza létre azt a RegExp-t, amelyet argumentumként át kell adnia a megadott karakterláncoknak.

Algoritmus kihívás

Ellenőrizze, hogy egy karaktersorozat (első argumentum, str) végződik-e a megadott karaktersorozattal (második argumentum target). Ez a kihívás megoldható .endsWith()az ES2015-ben bevezetett módszerrel. De ennek a kihívásnak a teljesítéséhez azt szeretnénk, ha ehelyett a JavaScript szubsztring módszereket használja.

Biztosított tesztesetek

confirmEnding("Bastian", "n")igaznak kell visszatérnie. confirmEnding("Congratulation", "on")vissza kell térnie igaznak. confirmEnding("Connor", "n")vissza kell adnia hamis. confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification")vissza kell adnia hamis. confirmEnding("He has to give me a new name", "name")igaznak kell visszatérnie. confirmEnding("Open sesame", "same")vissza kell térnie igaznak. confirmEnding("Open sesame", "pen")vissza kell adnia hamis. confirmEnding("Open sesame", "game")vissza kell adnia hamis. confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain")vissza kell adnia hamis. confirmEnding("Abstraction", "action")igaznak kell lennie. Ne használja a beépített módszert .endsWith()a kihívás megoldására.

1. Az első ötlet, amely egyáltalán nem működik

Ha hozzám hasonlóan RexExp szerető vagy, akkor első próbálkozásod lehet az, hogy megpróbálod megoldani a kihívást az alábbi kóddal , és ez nem fog működni .

Ennek oka, hogy ezzel a szintaxissal a test () függvény a konkrét „target” karakterláncot keresi, és nem a „target” -t mint argumentumként átadott változót.

Ha visszatérünk a teszteseteinkre, akkor azok, amelyeknek vissza kell adniuk a „hamis” értéket, átmennek, de egyikük sem felel meg az „igaz” értékre, ami meglehetősen kiszámítható.

2. Oldja meg a kihívást úgy, hogy létrehozza a kívánt RegExp-t a RegExp konstruktorral

Annak érdekében, hogy olyan RegExp-t használhasson, amely „megérti”, hogy a „target” argumentum változó, és nem a String „target”, létre kell hoznia egy Taylor által készített RegExp-t a RegExp konstruktor segítségével .

És mielőtt továbblépnénk, térjünk vissza egy percre, és nézzük meg, mit akarunk tesztelni: a „target” argumentumnak az „str” argumentumnak kell lennie. Ez azt jelenti, hogy a RegExp-nek a „$” karakterrel kell végződnie .

Ezt a kihívást három lépésben tudjuk megoldani

1. lépés - Hozzon létre egy változót, hozzáadva a „$” -t a „target” argumentum végén, ebben az esetben a concat () módszerrel.

2. lépés - Használja a RegExp konstruktort és az „új” operátort a megfelelő RexExp létrehozásához a fenti változóval.

3. lépés - adja vissza a teszt () függvény eredményét.

És ez szépen átmegy az összes esetvizsgálaton?

Ezt két sorban lehet átalakítani, mint ez

Megjegyzés : mivel egyik tesztesetben sem szerepel a betűk nagybetűinek tesztelése, nincs szükség az „i” jelző használatára.

Hasznos Linkek

String.prototype.concat () az MDN-ben

RegExp.prototype.test () az MDN-ben

RegExp konstruktor az MDN-ben

Reguláris kifejezések a freeCodeCamp-ban

Más megoldások erre a kihívásra

A „Get a Tint” kihívás megoldást javasol a slice () módszerrel .

Két másik módszert is találhat ennek a kihívásnak a megoldására, az egyiket az substr () módszerrel , a másikat pedig a endWith () módszerrel, amelyet Sonya Moisset magyarázta ebben a cikkben .

Ez az eseti RegExp megoldás segíthet a freeCodeCamp Intermediate Algorithm Scripting „Search and Replace” kihívásának megoldásában is .

Köszönöm, hogy elolvasta!

Ha tetszett ez a cikk, kérjük, "tapsoljon" annyiszor, ahányszor csak akarja, és ossza meg , hogy más emberek is megtalálják. Ettől lehet a napjuk.

Ha van reakciója / kérdése / javaslata , mindenképpen hagyjon megjegyzést alább . Örömmel olvasok tőled!

Kapcsolatba léphet és / vagy a Twitteren is követhet .