在 JavaScript 中使用替换和正则表达式将字符串中每个单词的第一个字母大写
下面的代码虽然多余,但效果很好:
'leap of,faith'.replace(/([^ \t]+)/g,"$1");
并打印“leap of,faith” ,但在以下内容中:
'leap of,faith'.replace(/([^\t]+)/g,RegExp.$1);
它打印“faithfaithfaith”,
结果是当我希望将每个大写单词的第一个字符如:
'leap of,faith'.replace(/([^ \t]+)/g,RegExp.$1.capitalize());
它不起作用。 也不会
'leap of,faith'.replace(/([^ \t]+)/g,"$1".capitalize);
,因为它可能在替换组的值之前将“$1”大写。
我想使用原型的 Capitalize() 方法在一行中完成此操作
The following,though redundant, works perfectly :
'leap of, faith'.replace(/([^ \t]+)/g,"$1");
and prints "leap of, faith", but in the following :
'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1);
it prints "faith faith faith"
As a result when I wish to capitalize each word's first character like:
'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1.capitalize());
it doesn't work. Neither does,
'leap of, faith'.replace(/([^ \t]+)/g,"$1".capitalize);
because it probably capitalizes "$1" before substituting the group's value.
I want to do this in a single line using prototype's capitalize() method
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以传递一个函数作为“.replace()”的第二个参数:
函数的参数首先是整个匹配,然后是匹配的组。在这种情况下,只有一组(“单词”)。函数的返回值用作替换。
You can pass a function as the second argument of ".replace()":
The arguments to the function are, first, the whole match, and then the matched groups. In this case there's just one group ("word"). The return value of the function is used as the replacement.