在 JavaScript 中使用替换和正则表达式将字符串中每个单词的第一个字母大写

发布于 2024-12-07 23:01:59 字数 501 浏览 2 评论 0原文

下面的代码虽然多余,但效果很好:

'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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情深如许 2024-12-14 23:01:59

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

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

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

You can pass a function as the second argument of ".replace()":

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文