freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../spinal-tap-case/index.md

8.8 KiB
Raw Blame History

title localeTitle
Spinal Tap Case Чехол для спинного диска

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

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

Преобразуйте данную строку в строчное предложение со словами, связанными тире.

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

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

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

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

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

Вам также придется сделать все в нижнем регистре.

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

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

Сложная часть - заставить часть регулярного выражения работать, как только вы это сделаете, просто переведите верхний регистр в нижний регистр и замените пробелы символами подчеркивания, используя replace() .

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

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

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

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

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

function spinalCase(str) { 
  // Create a variable for the white space and underscores. 
  var regex = /\s+|_+/g; 
 
  // Replace low-upper case to low-space-uppercase 
  str = str.replace(/([az])([AZ])/g, '$1 $2'); 
 
  // Replace space and underscore with - 
  return str.replace(regex, '-').toLowerCase(); 
 } 
 
 // test here 
 spinalCase('This Is Spinal Tap'); 

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

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

  • регулярное выражение содержит регулярное выражение /\s+|_+/g , которое выберет все пробелы и подчеркивания.
  • Первая replace() помещает пробел перед любыми встречающимися прописными буквами в строке str, чтобы потомки могли быть заменены на дефисы позже.
  • При возврате строки другая replace() заменяет пробелы и символы подчеркивания тире с помощью regex .

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

function spinalCase(str) { 
  // Replace low-upper case to low-space-uppercase 
  str = str.replace(/([az])([AZ])/g, '$1 $2'); 
  // Split on whitespace and underscores and join with dash 
  return str.toLowerCase().split(/(?:_| )+/) .join('-'); 
 } 
 
 // test here 
 spinalCase('This Is Spinal Tap'); 

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

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

  • Подобно первому решению, первая replace() помещает пробел перед любыми встречающимися прописными буквами в строке str, чтобы потомки могли быть заменены дефишированными позже.
  • Вместо того чтобы использовать replace() здесь для замены пробелов и подчеркивания тире, строка split() на регулярное выражение /(?:_| )+/ И join() -ed on - .

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

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

function spinalCase(str) { 
  // "It's such a fine line between stupid, and clever." 
  // --David St. Hubbins 
 
  return str.split(/\s|_|(?=[AZ])/).join('-').toLowerCase() 
 } 

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

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

  • Разделите строку в одном из следующих условий ( преобразование в массив )
    • пробельный символ [ \s ] встречается
    • символ подчеркивания [ _ ] встречается
    • или за ним следует заглавная буква [ (?=[AZ]) ]
  • Присоединитесь к массиву с помощью дефиса ( - )
  • Опишите всю полученную строку

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

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

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

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