以下虽然多余,但效果很好:
'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()方法在一行中完成此操作
答案 0 :(得分:12)
您可以将函数作为“.replace()”的第二个参数传递:
"string".replace(/([^ \t]+)/g, function(_, word) { return word.capitalize(); });
该函数的参数首先是整个匹配,然后是匹配的组。在这种情况下,只有一个组(“单词”)。该函数的返回值用作替换。