在字符串中大写单词的最佳方法是什么?

推荐答案

使用ES6的箭头函数实现字符串中单词大写的最短实现如下:

'your string'.replace(/\b\w/g, l => l.toUpperCase())
// => 'Your String'

ES5兼容实施:

'your string'.replace(/\b\w/g, function(l){ return l.toUpperCase() })
// => 'Your String'

正则表达式基本上匹配给定字符串中每个单词的第一个字母,并且只将该字母转换为大写:

  • \b匹配单词边界(单词的开头或结尾);
  • \w匹配以下元字符[a-Za-z0-9].

对于非ASCII字符,请改为参考此解决方案

'ÿöur striñg'.replace(/(^|\s)\S/g, l => l.toUpperCase())

此正则表达式匹配给定字符串中的第一个字母和每个非空格字母,前面有空格,并仅将该字母转换为大写:

  • \s匹配一个空白字符
  • \S匹配非空白字符
  • (x|y)与任何指定的备选方案匹配

在这里可以使用如下/(?:^|\s)\S/g的非捕获组,尽管我们的正则表达式中的g标志无论如何都不会在设计上捕获子组.

干杯

Javascript相关问答推荐

为什么有些库公开了执行相同任务的方法,但每个方法都处于同步/同步上下文中?

如何在alpinejs中显示dev中x-for的元素

调用SEARCH函数后,程序不会结束

成帧器运动中的运动组件为何以收件箱开始?

如何最好地从TypScript中的enum获取值

基于变量切换隐藏文本

网页自检测外部元素无法加载

在网页上添加谷歌亵渎词

给定一个凸多边形作为一组边,如何根据到最近边的距离填充里面的区域

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

如何在Angular拖放组件中同步数组?

如何使用TypeScrip设置唯一属性?

为什么客户端没有收到来自服务器的响应消息?

为什么我的按钮没有从&q;1更改为&q;X&q;?

有效路径同时显示有效路径组件和不存在的路径组件

将嵌套数组的元素乘以其深度,输出一个和

Reaction useState和useLoaderData的组合使用引发无限循环错误

如何让SVG图标在被点击和访问后改变 colored颜色 ,并在被访问后取消点击时恢复到原来的 colored颜色 ?

在HTML5画布上下文中使用putImageData时,重载解析失败

为什么我的SoupRequest";被重置为初始值,以及如何修复它?