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

I denne algoritme ønsker vi at ændre en tekststreng, så den altid har et stort bogstav i starten af ​​hvert ord.

I denne artikel vil jeg forklare tre tilgange. Først med en FOR-løkke, anden ved hjælp af map () -metoden og tredje ved hjælp af erstatningsmetoden ().

Algoritmeudfordring

Returner den angivne streng med det første bogstav i hvert ord med store bogstaver. Sørg for, at resten af ​​ordet er med små bogstaver.

Med henblik på denne øvelse skal du også bruge store bogstaver som "the" og "of".

Medfølgende testtilfælde

  • titleCase ("Jeg er en lille tepotte") skal returnere en streng.
  • titleCase ("Jeg er en lille tepotte") skal returnere "Jeg er en lille tepotte ".
  • titleCase ("sHoRt og sToUt") skal returnere "Short And Stout".
  • titleCase ("HER ER MIN HÅNDTAG HER ER MIN SPOUT") skal returnere "Her er mit håndtag her er min tud".

1. Titel sag en sætning med en FOR løkke

Til denne løsning bruger vi metoden String.prototype.toLowerCase (), metoden String.prototype.split (), metoden String.prototype.charAt (), metoden String.prototype.slice () og Array. prototype.join () metode.

  • Metoden toLowerCase () returnerer den kaldende strengværdi konverteret til små bogstaver
  • Den split () metode opsplitter en String objekt i et array af strenge ved at adskille strengen i delstrenge.
  • Metoden charAt () returnerer det angivne tegn fra en streng.
  • Metoden slice () udtrækker et afsnit af en streng og returnerer en ny streng.
  • Metoden join () forbinder alle elementerne i en matrix til en streng.

Vi bliver nødt til at tilføje et tomt mellemrum mellem parentesen til metoden split () ,

var strSplit = "I'm a little tea pot".split(' ');

som vil udsende en matrix med adskilte ord:

var strSplit = ["I'm", "a", "little", "tea", "pot"];

Hvis du ikke tilføjer pladsen i parentesen, får du denne output:

var strSplit = ["I", "'", "m", " ", "a", " ", "l", "i", "t", "t", "l", "e", " ", "t", "e", "a", " ", "p", "o", "t"];

Vi sammenkæder

str[i].charAt(0).toUpperCase()

- som vil bogstaver indeks 0 tegn for den aktuelle streng i FOR loop -

og

str[i].slice(1)

- som udtrækkes fra indeks 1 til slutningen af ​​strengen.

Vi indstiller hele strengen til små bogstaver til normaliseringsformål.

Med kommentarer:

 function titleCase(str) { // Step 1. Lowercase the string str = str.toLowerCase(); // str = "I'm a little tea pot".toLowerCase(); // str = "i'm a little tea pot"; // Step 2. Split the string into an array of strings str = str.split(' '); // str = "i'm a little tea pot".split(' '); // str = ["i'm", "a", "little", "tea", "pot"]; // Step 3. Create the FOR loop for (var i = 0; i  "I'm A Little Tea Pot" } titleCase("I'm a little tea pot");

Uden kommentarer:

function titleCase(str) { str = str.toLowerCase().split(' '); for (var i = 0; i < str.length; i++) { str[i] = str[i].charAt(0).toUpperCase() + str[i].slice(1); } return str.join(' '); } titleCase("I'm a little tea pot");

2. Titel Case a Sentence With the map () Metoden

Til denne løsning bruger vi Array.prototype.map () -metoden.

  • Den kortet () metode skaber en ny array med resultaterne af at kalde en forudsat funktion på hvert enkelt element i dette array. Brug af kort kalder en leveret tilbagekaldsfunktion én gang for hvert element i en matrix i rækkefølge og konstruerer et nyt array ud fra resultaterne.

Vi gemmer små bogstaver og deler strengen som vist i det foregående eksempel, inden vi anvender map () -metoden.

I stedet for at bruge en FOR-loop vil vi anvende map () -metoden som betingelse for den samme sammenkædning fra det foregående eksempel.

(word.charAt(0).toUpperCase() + word.slice(1));

Med kommentarer:

 function titleCase(str) { // Step 1. Lowercase the string str = str.toLowerCase() // str = "i'm a little tea pot"; // Step 2. Split the string into an array of strings .split(' ') // str = ["i'm", "a", "little", "tea", "pot"]; // Step 3. Map over the array .map(function(word) { return (word.charAt(0).toUpperCase() + word.slice(1)); /* Map process 1st word: "i'm" => (word.charAt(0).toUpperCase() + word.slice(1)); "i'm".charAt(0).toUpperCase() + "i'm".slice(1); "I" + "'m"; return "I'm"; 2nd word: "a" => (word.charAt(0).toUpperCase() + word.slice(1)); "a".charAt(0).toUpperCase() + "".slice(1); "A" + ""; return "A"; 3rd word: "little" => (word.charAt(0).toUpperCase() + word.slice(1)); "little".charAt(0).toUpperCase() + "little".slice(1); "L" + "ittle"; return "Little"; 4th word: "tea" => (word.charAt(0).toUpperCase() + word.slice(1)); "tea".charAt(0).toUpperCase() + "tea".slice(1); "T" + "ea"; return "Tea"; 5th word: "pot" => (word.charAt(0).toUpperCase() + word.slice(1)); "pot".charAt(0).toUpperCase() + "pot".slice(1); "P" + "ot"; return "Pot"; End of the map() method */ }); // Step 4. Return the output return str.join(' '); // ["I'm", "A", "Little", "Tea", "Pot"].join(' ') => "I'm A Little Tea Pot" } titleCase("I'm a little tea pot");

Uden kommentarer:

function titleCase(str) { return str.toLowerCase().split(' ').map(function(word) { return (word.charAt(0).toUpperCase() + word.slice(1)); }).join(' '); } titleCase("I'm a little tea pot");

3. Titel Sag en sætning Med kort () og erstatningsmetoderne ()

Til denne løsning vil vi fortsætte med at bruge metoden Array.prototype.map () og tilføje metoden String.prototype.replace ().

  • Metoden erstatte () returnerer en ny streng med nogle eller alle matches i et mønster erstattet af en erstatning.

I vores tilfælde vil mønsteret for erstatningsmetoden () være en streng, der skal erstattes af en ny erstatning og behandles som en ordret streng. Vi kan også bruge et regulært udtryk som mønster til at løse denne algoritme.

Vi gemmer og deler strengen som vist i det første eksempel, inden vi anvender map () -metoden.

Med kommentarer:

 function titleCase(str) { // Step 1. Lowercase the string str = str.toLowerCase() // str = "i'm a little tea pot"; // Step 2. Split the string into an array of strings .split(' ') // str = ["i'm", "a", "little", "tea", "pot"]; // Step 3. Map over the array .map(function(word) { return word.replace(word[0], word[0].toUpperCase()); /* Map process 1st word: "i'm" => word.replace(word[0], word[0].toUpperCase()); "i'm".replace("i", "I"); return word => "I'm" 2nd word: "a" => word.replace(word[0], word[0].toUpperCase()); "a".replace("a", "A"); return word => "A" 3rd word: "little" => word.replace(word[0], word[0].toUpperCase()); "little".replace("l", "L"); return word => "Little" 4th word: "tea" => word.replace(word[0], word[0].toUpperCase()); "tea".replace("t", "T"); return word => "Tea" 5th word: "pot" => word.replace(word[0], word[0].toUpperCase()); "pot".replace("p", "P"); return word => "Pot" End of the map() method */ }); // Step 4. Return the output return str.join(' '); // ["I'm", "A", "Little", "Tea", "Pot"].join(' ') => "I'm A Little Tea Pot" } titleCase("I'm a little tea pot");

Uden kommentarer:

function titleCase(str) { return str.toLowerCase().split(' ').map(function(word) { return word.replace(word[0], word[0].toUpperCase()); }).join(' '); } titleCase("I'm a little tea pot");

Jeg håber, du fandt dette nyttigt. Dette er en del af min "How to Solve FCC Algorithms" -serie om artikler om Free Code Camp 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

In this article, I’ll explain how to solve freeCodeCamp’s “Repeat a string repeat a string” challenge. This involves…

Two ways to confirm the ending of a String in JavaScript

In this article, I’ll explain how to solve freeCodeCamp’s “Confirm the Ending” challenge.

Three Ways to Reverse a String in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Reverse a String”

Three Ways to Factorialize a Number in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Factorialize a Number”

Two Ways to Check for Palindromes in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Check for Palindromes”.

Three Ways to Find the Longest Word in a String in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Find the Longest Word in a String”.

På tre måder kan du finde det største tal i en matrix ved hjælp af JavaScript

I denne artikel vil jeg forklare, hvordan man løser Free Code Camps "Returner største numre i arrays" -udfordring. Dette…

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 .

# StayCurious, # KeepOnHacking & # MakeItHappen!

Ressourcer

  • toLowerCase () metode - MDN
  • toUpperCase () metode - MDN
  • charAt () metode - MDN
  • slice () metode - MDN
  • split () metode - MDN
  • join () metode - MDN
  • til - MDN
  • map () metode - MDN
  • erstat () metode - MDN