Сохранение регистра при замене
Здравствуйте!
Мне в последнее время стало необходимо работать с RegExp для поиска строк, а также их замены. Через некоторое время, столкнулся с проблемой - заменой строк с сохранением регистра. Думал использовать toUpperCase и toLowerCase для сравнение символов по отдельности, но думаю это будет как-то костыльно. var reg = /ола/gi; var str = "Ола ОЛА ола"; alert(str.replace(reg, "привет")); Мне нужно сохранение регистра: Ола -> Привет ОЛА -> ПРИВЕТ ола -> привет Ну, точнее как сохранение... Количество символов разное - мне важен регистр, а не постоянный капслок. |
Так?
var reg = /ола/g; var str = "Ола ОЛА ола"; alert(str.replace(reg, "привет")); https://javascript.ru/regexp |
ну, мне нужно чтобы было Привет ПРИВЕТ привет ;)
|
var str = "Ола ОЛА ола"; alert( str.replace(/ола/g, "привет") .replace(/Ола/g, "Привет") .replace(/ОЛА/g, "ПРИВЕТ") ); |
ну тогда как-нибудь в функцию отделить, просто у меня около 130 таких слов
|
MaXFeeD,
let str = "Ола ОЛА ола";
function fn(str)
{ const obj = {"ола" : "привет"};
for (const [key, value] of Object.entries(obj)) {
let reg = new RegExp(`${key}`, "gi");
str = str.replace(reg, a => a == key ? value : a == key.toUpperCase() ? value.toUpperCase() : value.slice(0,1).toUpperCase() + value.slice(1))
}
return str
}
alert(fn(str));
|
ну да, что-то такое. спасибо, надеюсь мои 130 слов не будут лагать ;)
|
| Часовой пояс GMT +3, время: 23:11. |