Сохранение регистра при замене
Здравствуйте!
Мне в последнее время стало необходимо работать с 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, время: 13:57. |