2

这是困扰我一段时间的事情。

假设我在一条线上这样做

var result = "Noble warm and pretty darm Caesar.".split(/(\warm)/);
// ["Noble ", "warm", " and pretty ", "darm", " Caesar."]

是否可以扩展 split 方法以使用类似replace字符串的函数来操作正则表达式捕获?

伪代码:

var result = "Noble warm and pretty darm Caesar.".split(/(\warm)/, function (match) {
        return '<span style="color:red;">' + match + '</span>';
});
// ["Noble ", "<span style=\"color:red;\">warm</span>", " and pretty ", "<span style=\"color:red;\">darm</span>", " Caesar."]
4

1 回答 1

1

prototype您可以在对象的对象属性中定义自己的函数String

以下函数是您可以执行的操作的示例:

String.prototype.splitReplace = function(pattern, fn)
{
    var array = this.split(pattern);
    for (var i = 0; i < array.length; i++)
    {
        if (i % 2 == 1)
        {
            array[i] = fn(array[i]);
        }
    }
    return array;
}

如上所述,这个函数只是一个简单的例子,展示了如何将函数添加到 String 原型属性。但是您应该使用@User2121315 在评论中给我们的智能且健壮的函数声明

于 2013-01-12T16:52:55.187 回答