To måder at bekræfte afslutningen på en streng i JavaScript

I denne artikel vil jeg forklare, hvordan man løser freeCodeCamp's "Confirm the Ending " -udfordring . Dette indebærer at kontrollere, om en streng slutter med en bestemt rækkefølge af tegn.

Der er de to tilgange, jeg vil dække:

  1. ved hjælp af substr () -metoden
  2. ved hjælp af endsWith () -metoden

Algoritmeudfordringsbeskrivelsen

Kontroller, om en streng (første argument, str) slutter med den givne målstreng (andet argument, target).

Denne udfordring kan løses med .endsWith()metoden, der blev introduceret i ES2015. Men med henblik på denne udfordring vil vi gerne have, at du bruger en af ​​JavaScript-substreringsmetoderne i stedet.

function confirmEnding(string, target) { return string; } confirmEnding("Bastian", "n");

Medfølgende testtilfælde

confirmEnding("Bastian", "n") should return true. confirmEnding("Connor", "n") should return false. confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") should return false. largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]) should return [9, 35, 97, 1000000]. confirmEnding("He has to give me a new name", "name")should return true. confirmEnding("Open sesame", "same") should return true. confirmEnding("Open sesame", "pen") should return false. confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") should return false. Do not use the built-in method .endsWith() to solve the challenge.

Tilgang nr. 1: Bekræft afslutningen på en streng med indbyggede funktioner - med substr ()

Til denne løsning bruger du metoden String.prototype.substr ():

  • De substr()metode returnerer de tegn i en streng der begynder ved den angivne placering gennem den angivne antal tegn.

Hvorfor bruger du string.substr(-target.length)?

Hvis target.length er negativ, vil metoden substr () begynde at tælle fra slutningen af ​​strengen, hvilket er det, du vil have i denne kodeudfordring.

Du vil ikke bruge string.substr(-1)til at hente det sidste element i strengen, for hvis målet er længere end et bogstav:

confirmEnding("Open sesame", "same")

... målet vender slet ikke tilbage.

Så her string.substr(-target.length)får vi det sidste indeks for strengen 'Bastian', som er 'n'.

Derefter kontrollerer du, om det er string.substr(-target.length)lig med målet (sandt eller falsk).

 function confirmEnding(string, target) { // Step 1. Use the substr method if (string.substr(-target.length) === target) { // What does "if (string.substr(-target.length) === target)" represents? // The string is 'Bastian' and the target is 'n' // target.length = 1 so -target.length = -1 // if ('Bastian'.substr(-1) === 'n') // if ('n' === 'n') // Step 2. Return a boolean (true or false) return true; } else { return false; } } confirmEnding('Bastian', 'n');

Uden kommentarer:

 function confirmEnding(string, target) { if (string.substr(-target.length) === target) { return true; } else { return false; } } confirmEnding('Bastian', 'n');

Du kan bruge en ternær operator som en genvej til if-sætningen:

(string.substr(-target.length) === target) ? true : false;

Dette kan læses som:

if (string.substr(-target.length) === target) { return true; } else { return false; }

Du returnerer derefter den ternære operatør i din funktion:

 function confirmEnding(string, target) { return (string.substr(-target.length) === target) ? true : false; } confirmEnding('Bastian', 'n');

Du kan også omlægge din kode for at gøre den mere kortfattet ved blot at returnere tilstanden:

function confirmEnding(string, target) { return string.substr(-target.length) === target; } confirmEnding('Bastian', 'n');

Tilgang nr. 2: Bekræft afslutningen på en streng med indbyggede funktioner - med enderWith ()

Til denne løsning bruger du metoden String.prototype.endsWith ():

  • Den endsWith()fremgangsmåden, om en streng ender med karakterer af anden streng, vender tilbage trueeller falsesom passende. Denne metode skelner mellem store og små bogstaver.
function confirmEnding(string, target) { // We return the method with the target as a parameter // The result will be a boolean (true/false) return string.endsWith(target); // 'Bastian'.endsWith('n') } confirmEnding('Bastian', 'n');

Jeg håber, du fandt dette nyttigt. Dette er en del af min serie "How to Solve FCC Algorithms" om freeCodeCamp Algorithm Challenges, hvor jeg foreslår flere løsninger og forklarer trin for trin, hvad der sker under emhætten.

Tre måder at gentage en streng i JavaScript

I denne artikel vil jeg forklare, hvordan man løser freeCodeCamp's "Gentag en streng gentag en streng" -udfordring. Dette involverer ...

Tre måder at vende en streng i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting “Vend en streng”

Tre måder at faktorisere et nummer i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting “Faktoriser et tal”

To måder at kontrollere palindromer i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting “Check for Palindromes”.

Tre måder at finde det længste ord i en streng i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting "Find det længste ord i en streng".

Tre måder at betegne sag på en sætning i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting "Titel sag en sætning".

Hvis du har din egen løsning eller forslag, så del dem nedenfor i kommentarerne.

Eller du kan følge mig på Medium , Twitter, Github og LinkedIn lige efter at du har klikket på det grønne hjerte nedenfor ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Yderligere ressourcer

  • substr () metode - MDN
  • endsWith () metode - MDN
  • Ternær operatør - MDN