Оставить знак препинания нетронутым
Задание: Переместите первую букву каждого слова в конец, затем добавьте "ay" в конец слова. Оставьте знаки препинания нетронутыми.
Это мой код! Он работает, однако я не могу оставить знаки препинания нетронутыми, как это сделать. Желательно не сильно меняя исходный код.
function pigIt(str){
return str.split(" ").map( (a) => a.slice(1) + a[0] + 'ay').join(' ')
}
Пример работы кода:
pigIt('Pig latin is cool'); // igPay atinlay siay oolcay
pigIt('Hello world !'); // elloHay orldway ! То есть, если в предложении нету знаков препинания, то мой код работает, но как учесть знаки препинания?
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
\p{L}
- совпадает с буквами на любых языках;(\p{L})
- группа (первая) с первой буквой слова;(\p{L}*)
- группа (вторая) с остальными буквами слова;g
- флаг, который заставляет редактировать все слова. Без него замена будет сделана только раз;u
- флаг обработки Unicode, без него выражение\p{L}
не работает;$2
- вставляет вторую группу - хвост слова;$1
- вставляет первую группу - первую букву слова.
const pigIt = s => s.replace(/(\p{L})(\p{L}*)/gu, '$2$1ay');