8.8 KiB
8.8 KiB
title | localeTitle |
---|---|
Spinal Tap Case | Чехол для спинного диска |
Не забудьте использовать Read-Search-Ask
если вы застряли. Попробуйте подключить программу и напишите свой собственный код
Проблема Объяснение:
Преобразуйте данную строку в строчное предложение со словами, связанными тире.
Связанные ссылки
Подсказка: 1
Создайте регулярное выражение для всех пробелов и подчеркиваний.
попытаться решить проблему сейчас
Подсказка: 2
Вам также придется сделать все в нижнем регистре.
попытаться решить проблему сейчас
Подсказка: 3
Сложная часть - заставить часть регулярного выражения работать, как только вы это сделаете, просто переведите верхний регистр в нижний регистр и замените пробелы символами подчеркивания, используя replace()
.
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода:
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');
Код Объяснение:
- регулярное выражение содержит регулярное выражение
/\s+|_+/g
, которое выберет все пробелы и подчеркивания. - Первая
replace()
помещает пробел перед любыми встречающимися прописными буквами в строке str, чтобы потомки могли быть заменены на дефисы позже. - При возврате строки другая
replace()
заменяет пробелы и символы подчеркивания тире с помощью regex .
Решение промежуточного кода:
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');
Код Объяснение:
- Подобно первому решению, первая
replace()
помещает пробел перед любыми встречающимися прописными буквами в строке str, чтобы потомки могли быть заменены дефишированными позже. - Вместо того чтобы использовать
replace()
здесь для замены пробелов и подчеркивания тире, строкаsplit()
на регулярное выражение/(?:_| )+/
Иjoin()
-ed on-
.
Связанные ссылки
Расширенное решение для кода:
function spinalCase(str) {
// "It's such a fine line between stupid, and clever."
// --David St. Hubbins
return str.split(/\s|_|(?=[AZ])/).join('-').toLowerCase()
}
Код Объяснение:
- Разделите строку в одном из следующих условий ( преобразование в массив )
- пробельный символ [
\s
] встречается - символ подчеркивания [
_
] встречается - или за ним следует заглавная буква [
(?=[AZ])
]
- пробельный символ [
- Присоединитесь к массиву с помощью дефиса (
-
) - Опишите всю полученную строку
Связанные ссылки
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
- НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .
- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( НЕ удаляйте существующие имена пользователей )
Видеть
Wiki Challenge Solution Template
дляWiki Challenge Solution Template
для справки.