使用replace和regex来优化JavaScript中每个单词的第一个字母

时间:2011-10-05 14:30:00

标签: javascript regex capitalization

以下虽然多余,但效果很好:

'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”大写。

我想使用prototype的capitalize()方法在一行中完成此操作

1 个答案:

答案 0 :(得分:12)

您可以将函数作为“.replace()”的第二个参数传递:

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

该函数的参数首先是整个匹配,然后是匹配的组。在这种情况下,只有一个组(“单词”)。该函数的返回值用作替换。