freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../basic-algorithm-scripting/title-case-a-sentence/index.md

10 KiB
Raw Blame History

title localeTitle
Title Case a Sentence Название Случайное предложение

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

Мы должны вернуть предложение с титульным листом. Это означает, что первая буква всегда будет в верхнем регистре, а остальные будут в нижнем регистре.

Связанные ссылки

:speech_balloon: Подсказка: 1

  • Вы должны начать с разделения строки на массив слов.
  • Разделите предложение.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 2

  • Вы должны сделать слово в нижнем регистре, прежде чем делать первую букву в верхнем регистре.
  • Используйте метод замены для каждого слова, чтобы загладить первую букву каждого слова.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 3

  • Вам нужно будет создать новую строку с фрагментами предыдущего и в конце снова объединить все в одну строку.
  • В методе замены дайте первый аргумент как позицию первой буквы, используя charAt. Для второго аргумента напишите функцию, чтобы вернуть заглавную букву в качестве замены.

попытаться решить проблему сейчас

Осторожно, спойлеры!

предупреждающий знак

Решение впереди!

:beginner: Решение базового кода:

String.prototype.replaceAt = function(index, character) { 
    return this.substr(0, index) + character + this.substr(index+character.length); 
 }; 
 
 function titleCase(str) { 
    var newTitle = str.split(' '); 
    var updatedTitle = []; 
    for (var st in newTitle) { 
        updatedTitle[st] = newTitle[st].toLowerCase().replaceAt(0, newTitle[st].charAt(0).toUpperCase()); 
    } 
    return updatedTitle.join(' '); 
 } 

:rocket: Код запуска

Код Объяснение:

Мы модифицируем функцию replaceAt с использованием прототипа, чтобы облегчить использование программы.

Разделите строку пробелами и создайте переменную для отслеживания обновленного заголовка. Затем мы используем цикл для поворота первого символа слова в верхний регистр, а остальные - в нижний регистр. создавая конкатенированную строку, состоящую из всего слова в нижнем регистре, причем первый символ заменяется на верхний.

Связанные ссылки

:sunflower: Решение промежуточного кода:

function titleCase(str) { 
  var convertToArray = str.toLowerCase().split(" "); 
  var result = convertToArray.map(function(val){ 
      return val.replace(val.charAt(0), val.charAt(0).toUpperCase()); 
  }); 
  return result.join(" "); 
 } 
 
 titleCase("I'm a little tea pot"); 

:rocket: Код запуска

Код Объяснение:

Мы делаем всю строчную строчную строчку, а затем преобразуем ее в массив. Затем мы используем функцию карты, чтобы заменить символ нижнего регистра верхним регистром. Наконец, мы возвращаем строку, используя метод join .

Связанные ссылки

:rotating_light: Расширенное решение для кода:

function titleCase(str) { 
  return str.toLowerCase().replace(/(^|\s)\S/g, (L) => L.toUpperCase()); 
 } 

:rocket: Код запуска

Код Объяснение:

Решение работает, сначала уменьшая все символы в строке, а затем только верхний индекс первого символа каждого слова.

  • str.toLowerCase() цепочку с помощью str.toLowerCase() .

  • Замените каждое слово «первый символ» на верхний регистр, используя .replace .

  • Поиск символа в начале каждого слова, т.е. сопоставление любого символа, следующего за space или совпадающего с первым символом всей строки, с использованием следующего шаблона.

  • Объяснение Regex:

  • Найти все символы без пробелов (\S )

  • В начале строки (^)

  • Или после любого символа пробела (\s)

    • Модификатор g ищет другой такой шаблон слова во всей строке и заменяет их.

    • Это решение работает с национальными символами и акцентированными буквами, как показано на следующих примерах
      international characters: 'бабушка курит трубку' // -> 'Бабушка Курит Трубку'
      accented characters: 'località àtilacol' // -> 'Località Àtilacol'

Связанные ссылки

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Увидеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.