【问题标题】:question about javascript string's replace method关于javascript字符串替换方法的问题
【发布时间】:2011-01-22 03:44:45
【问题描述】:
我知道我可以将一个字符串作为第二个参数传递给 JavaScript 字符串对象的 replace 方法。在这种情况下,我可以使用 $` 和 $' 来引用成功的左/右部分文本匹配。现在我的问题是,如果我将回调函数作为第二个参数传递,我怎样才能获得相同的信息?我想在回调函数中使用这个信息。非常感谢。
【问题讨论】:
标签:
javascript
regex
string
replace
【解决方案1】:
见Mozilla's documentation;你不会免费获得这些数据。
好消息是,您将将匹配的偏移量作为倒数第二个参数,并将总字符串作为最后一个参数。所以你可以运行你自己的子字符串函数。
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
});
【解决方案2】:
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
});