Как заменять много слов в строке одной строчкой кода?

Я делаю сайт, на котором можно оставлять комментарии.

И когда я делал, я вспомнил одну штучку, которая есть на старых сайтах:
по нажатию кнопки можно вставлять в комментарий эмодзи.
Только ты вставляешь не на прямую эмодзи, а текст по примеру: ":smile:".

Я захотел реализовать такую идею.

Только я не знаю, как можно одной строчкой кода заменить слова в тексте.

Т.е. вот пример:

let to_send = text.replace(":smile:", "😂", ":like:", "😎");

Только это так не работает...

P.S. Я пытаюсь первым аргументом передать слово, которое я хочу заменить, а вторым на какое. А 3-им аргументом я также передаю слово, которое также хочу заменить, а 4-ым аргументов передаю слово, на которое я хочу заменить слово из 3-го аргумента.
  • Вопрос задан
  • 79 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
То есть вы сами придумали, как должна работать библиотечная функция, а потом удивлетесь, что она работает не так, как вы придумали?
const emojies= [
  [/:smile:/g, '😂'],
  [/:like:/g, '😎'],
];

const emojiReplace = (text) => {
  let result = text;
  for (let i = 0; i < emojies.length; i += 1) {
    result = result.replace(emojies[i][0], emojies[i][1]);
  }
  return result;
}

console.log(emojiReplace(':smile::smile::smile::like:'));
// &#128514;&#128514;&#128514;&#128526;
Ответ написан
Комментировать
modelair
@modelair
unsocial
let text = ':smile::smile: Hello! :like:'

const smiley = {
  ':smile:': '&#128514;',
  ':like:': '&#128526;'
}

for (const smileyKey in smiley) {
  const regex = new RegExp(smileyKey, 'g')
  text = text.replace(regex, smiley[smileyKey])
}

console.log('text', text)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы