Нужно заменить методом replace a\\\a на?
у меня есть функция
function replaceLetters(str) {
return str.replace('a\\\\\\a', "!")
}
replaceLetters('a\a a\\a a\\\a')
На выходе у меня должна получиться строка a\a a\\a ! но я получаю aa a\a a\a
что делаю не так? подскажите пожалуйста
Ответы (1 шт):
Автор решения: Leonid
→ Ссылка
В строке, которую вы задаете изначально происходят преобразования и она попадает в функцию не той, какую вы видите. В этой строке надо экранировать символ \ тоже.
function replaceLetters(str) {
return str.replace(/a\\\\\\a/g, "!")
}
console.log(replaceLetters(`a\a a\\a a\\\a`));
console.log(`a\a a\\a a\\\a`);
console.log(replaceLetters(`a\\a a\\\\a a\\\\\\a`));
console.log(`a\\a a\\\\a a\\\\\\a`);
Однако, есть возможность оставить строку без изменений используя в качестве тега шаблона (строки в ``) String.raw:
function replaceLetters(str) {
return str.replace('a\\\\\\a', "!")
}
console.log(replaceLetters(String.raw`a\a a\\a a\\\a`)); // Передаем в функцию строку в неизменном виде!