вопрос о методе замены строки JavaScript - PullRequest
7 голосов
/ 01 марта 2010

Я знаю, что могу передать строку в качестве второго параметра методу замены объекта строки JavaScript. В этом случае я могу использовать $ ` и $ ' для ссылки на текст левой / правой части успешного совпадения. Теперь мой вопрос: если я передам функцию обратного вызова в качестве второго параметра, как я могу получить ту же информацию? Я хочу использовать эту информацию в функции обратного вызова. Большое спасибо.

Ответы [ 2 ]

10 голосов
/ 01 марта 2010

См. Документация Mozilla ; вы не получите эти данные бесплатно.

Хорошая новость заключается в том, что вы получите смещение совпадения в качестве второго и последнего аргумента и итоговую строку в качестве последнего. Таким образом, вы можете запускать свои собственные функции подстроки.

var str = 'abc';
str = str.replace('b', function (match, offset, full) {
    var before = full.substr(0, offset),
        after = full.substr(offset + 1, full.length - offset);
    return 'foo'; // or, ya know, something actually using before and after
});
0 голосов
/ 29 декабря 2013
var str = 'abc';
str = str.replace('b', function (match) {
    // (!) List of actual arguments depends from template of RegEx >>>
    var offset = arguments.length - 1, full = arguments[offset];
    offset = arguments[offset - 1];
    // (!) But the first argument is match
    var before = full.substr(0, offset),
        after = full.substr(offset + 1, full.length - offset);
    return 'foo'; // or, ya know, something actually using before and after
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...