victorzadorozhnyy
@victorzadorozhnyy

Как сделать регулярку для замены буквы в строке на ключи из object?

Есть строка с английстим текстом и есть объект у которого ключи английские буквы, а значения буквы другого алфавить.
const pairs = { "a": "ა", "b": "ბ", "g": "გ", ...}

В приложении есть кнопки, которые в оригинальном тексте заменяют буквы при нажатии. Сейчас это выглядит так
let myObject = { a: "ა", b: "ბ", g: "გ", ... } // Сюда пушаем новую пару при нажатии кнопки
let text = "There are many ways that reading helps you to learn English...."

class App extends Component {
  render() {
    Object.keys(myObject).map((key, index) => {
      var search_term = new RegExp(key, "gi")
      text = text.replace(search_term, myObject[key]) // хочу заменить на регулярку, в которую смогу добавлять и убирать пары букв
    })
    return (
      <div className="App-body">
        <p>{text}</p>
      </div>
    )
  }
}

Как сделать такую регулярку?
  • Вопрос задан
  • 215 просмотров
Пригласить эксперта
Ответы на вопрос 1
zendor
@zendor
Можно без регулярного выражения:
const pairs = { a: 'ა', b: 'ბ', g: 'გ'};
const str = 'There are many ways that reading helps you to learn English.';
[...str].map(letter => pairs[letter.toLowerCase()] || letter).join``;

Ну или с ним:
const pairs = { a: 'ა', b: 'ბ', g: 'გ'};
const str = 'There are many ways that reading helps you to learn English.';
str.replace(RegExp(Object.keys(pairs).join('|'), 'gi'), letter => pairs[letter.toLowerCase()]);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы