开发者

question about javascript string's replace method

I know that I can pass a string as the second parameter to the JavaScript string object's replace method. In this case I can use $` and $' to reference the left/right part text of a successful match. Now my question is, If I pass a callback function as t开发者_开发技巧he second parameter, how can I get the same information? I want to use this infomation in the callback function. Great thanks.


See Mozilla's documentation; you won't get that data for free.

The good news is, you will get the offset of the match as your second-to-last argument, and the total string as the last. So you can run your own substring functions.

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
});


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
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜