JavaScript: «Динамическая» обратная ссылка, замена RegExp - PullRequest
1 голос
/ 01 декабря 2010

Я хочу сделать такие замены:

var txt = "Some text containing $_variable1 and with $_variable2 inside of it as well.";
var rx = /(\$_[a-z]+)/g

var $_variable1 = "A CAT";
var $_variable2 = "A HOTDOG";

var replaced_txt = txt.replace(rx, $1);

Я хочу, чтобы replaced_txt равнялся "... содержащему A CAT и A HOTDOG ins ...", но единственный способ добиться этого, который я нашел до сих пор, это:

var replaced_txt = txt.replace(rx, function($1){return eval($1)});

И у меня такое чувство, что это не самое элегантное решение, нет?

Желательно, чтобы я избегал eval()

Я благодарен за любые идеи по этому поводу!

/ С

1 Ответ

1 голос
/ 01 декабря 2010

Вы можете сделать это:

var values = {
  '$_variable1': 'A CAT',
  '$_variable2': 'A HOTDOG'
};
var replaced_txt = txt.replace(rx, function(_, varName) {
  return values[varName] ? values[varName] : '<unknown variable: ' + varName + '>';
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...