2

これは、しばらくの間私を悩ませてきたものです。

これを行で行っていると仮定します

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

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オブジェクトのobject プロパティで独自の関数を定義できます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 に答える