5

以下は、冗長ではありますが、完全に機能します。

'leap of, faith'.replace(/([^ \t]+)/g,"$1");

そして、「リープオブ、信仰」を出力しますが、次のとおりです。

'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1);それは「信仰信仰信仰」を印刷します

その結果、次のように各単語の最初の文字を大文字にしたい場合:

'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1.capitalize());

うまくいきません。どちらも、

'leap of, faith'.replace(/([^ \t]+)/g,"$1".capitalize);

グループの値を置き換える前に、おそらく「$1」を大文字にするためです。

プロトタイプの capitalize() メソッドを使用して、これを 1 行で実行したい

4

1 に答える 1

13

".replace()" の 2 番目の引数として関数を渡すことができます。

"string".replace(/([^ \t]+)/g, function(_, word) { return word.capitalize(); });

関数への引数は、最初に一致全体、次に一致したグループです。この場合、グループは 1 つだけです (「単語」)。関数の戻り値が置換として使用されます。

于 2011-10-05T14:33:09.147 に答える