Три начина за озаглавяване на изречение в JavaScript

Тази статия се основава на скриптове за основен алгоритъм на Free Code Camp „ Case Case a Sentence “.

В този алгоритъм искаме да променим низ от текст, така че той винаги да има главна буква в началото на всяка дума.

В тази статия ще обясня три подхода. Първо с FOR цикъл, второ с помощта на метода map () и трето с помощта на метода replace ().

Предизвикателство на алгоритъма

Върнете предоставения низ с първата буква на всяка дума с главни букви. Уверете се, че останалата част от думата е с малки букви.

За целите на това упражнение трябва също да пишете с главни букви свързващи думи като „the“ и „of“.

Предоставени тестови случаи

  • titleCase („Аз съм малка тенджера за чай“) трябва да връща низ.
  • titleCase („Аз съм малък чайник“) трябва да върне „Аз съм малко чайник “.
  • titleCase (“sHoRt AnD sToUt”) трябва да върне “Short And Stout”.
  • titleCase („ТУК Е МОЯТА ДРЪЖКА ТУК Е МОЯТА ПОРЪЧКА“) трябва да върне „Тук е моята дръжка Тук е моят чучур“.

1. Заглавие дело изречение с цикъл ЗА

За това решение ще използваме метода String.prototype.toLowerCase (), метода String.prototype.split (), метода String.prototype.charAt (), метода String.prototype.slice () и масива. метод prototype.join ().

  • Методът toLowerCase () връща извикващата стойност на низа, преобразувана в малки букви
  • Методът split () разделя String обект в масив от низове, като разделя низа на поднизове.
  • Методът charAt () връща посочения знак от низ.
  • Методът slice () извлича част от низ и връща нов низ.
  • Методът join () обединява всички елементи на масив в низ.

Ще трябва да добавим празно пространство между скобите на метода split () ,

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

което ще изведе масив от отделени думи:

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

Ако не добавите интервала в скобите, ще получите този изход:

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

Ще се обединим

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

- което ще заглави символа с индекс 0 на текущия низ в цикъла FOR -

и

str[i].slice(1)

- което ще извлече от индекс 1 до края на низа.

За целите на нормализирането ще зададем целия низ в малки букви.

С коментари:

 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");

Без коментари:

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. Заглавие Case a Sentence With the map () Метод

За това решение ще използваме метода Array.prototype.map ().

  • Методът map () създава нов масив с резултатите от извикването на предоставена функция за всеки елемент в този масив. Използването на map ще извика предоставената функция за обратно извикване веднъж за всеки елемент в масив, по ред, и конструира нов масив от резултатите.

Ще използваме малки букви и ще разделим низа, както се вижда в предишния пример, преди да приложим метода map ().

Вместо да използваме цикъл FOR, ние ще приложим метода map () като условие за същата конкатенация от предишния пример.

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

С коментари:

 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");

Без коментари:

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. Заглавие Case a Sentence С методите map () и replace ()

За това решение ще продължим да използваме метода Array.prototype.map () и ще добавим метода String.prototype.replace ().

  • Методът replace () връща нов низ с някои или всички съвпадения на шаблон, заменен от заместител.

В нашия случай моделът за метода replace () ще бъде низ, който ще бъде заменен с нов заместител и ще бъде третиран като дословен низ. Също така можем да използваме регулярен израз като модел за решаване на този алгоритъм.

Ще използваме малки букви и ще разделим низа, както се вижда в първия пример, преди да приложим метода map ().

С коментари:

 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");

Без коментари:

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");

Надявам се, че сте намерили това за полезно. Това е част от поредицата ми статии „Как да реша алгоритми на FCC“ за предизвикателствата на алгоритъма на Free Code Camp, където предлагам няколко решения и обяснявам стъпка по стъпка какво се случва под капака.

Три начина за повторение на низ в 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”.

Three ways you can find the largest number in an array using JavaScript

In this article, I’m going to explain how to solve Free Code Camp’s “Return Largest Numbers in Arrays” challenge. This…

If you have your own solution or any suggestions, share them below in the comments.

Or you can follow me on Medium, Twitter, Github and LinkedIn.

‪#‎StayCurious‬, ‪#‎KeepOnHacking‬ & ‪#‎MakeItHappen‬!

Resources

  • toLowerCase() method — MDN
  • toUpperCase() method — MDN
  • charAt() method — MDN
  • slice() method — MDN
  • split() method — MDN
  • join() method — MDN
  • for — MDN
  • map() method — MDN
  • replace() method — MDN