Javascript Заменить параметрами - PullRequest
0 голосов
/ 04 ноября 2018

Итак, я делаю редактор уценок, и мне нужна какая-то функция вроде "This is *italics*".replace("*$1*","<i>$1</i>");

Есть ли простой способ сделать это? (Клиентская сторона, это будет размещено на Github Pages или где-то еще, поэтому случайный пакет npm, вероятно, не поможет)

Редактировать: равное количество людей проголосовали за и против. Было бы полезно, если бы вы сказали мне, почему вы проголосовали.

1 Ответ

0 голосов
/ 04 ноября 2018

Краткий ответ: 'This is *italics*'.replace(/\*(.+)\*/, '<i>$1</i>');


Объяснение: Использование RegExp - это самый простой способ сделать это, в частности, секция группировки . Давайте раздвинем /\*(.+)\*/:

  1. Начальный и конечный / определяют, что промежуточная вещь на самом деле является RegExp
  2. Нам нужно проверить звездочки в начале и в конце, , но * является селектором количества в RegExp, поэтому нам нужно экранировать их, используя \ (в основном говоря "эй, следующий символ не является фактическим селектором, а является чем-то буквальным ")
  3. Далее нам нужно указать, что нам нужно проверить любой символ между этими звездочками (это .), появляющийся более одного раза (это +)
  4. Наконец, нам нужно group это и сказать RegExp, что мы хотим помнить, это то, что находится между звездочками, а не целое, вот где parenthesis начинает действовать.
  5. Используя эти круглые скобки, мы можем сделать $n (где n - номер совпадающего количества, в данном случае 1) в замещающей строке, чтобы заменить соответствующую группу
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...