在字符串中大写单词的最佳方法是什么?
当前回答
http://www.mediacollege.com/internet/javascript/text/case-capitalize.html是众多答案中的一个。
谷歌可以是解决此类问题所需的全部内容。
naïve方法是用空格分隔字符串,结果数组中每个元素的首字母大写,然后将它们重新连接起来。这就保留了现有的大写(例如,HTML仍然是HTML,而不会变成像HTML那样愚蠢的东西)。如果不希望产生这种影响,请在拆分字符串之前将整个字符串转换为小写字母。
其他回答
在字符串中大写单词的最短实现是使用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'
regex基本上匹配给定字符串中每个单词的首字母,并只将该字母转换为大写字母:
\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标志不会按设计捕获子组。
一个简单,直接(非正则)的解决方案:
const capitalizeFirstLetter = s =>
s.split(' ').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')
将字符串拆分为单词数组(使用空格分隔符) 将每个单词分成第一个字符+单词中的其余字符 第一个字母转换为大写字母,其余字母保持原样 将数组连接回带有空格的字符串
function capitalize(s){
return s.toLowerCase().replace( /\b./g, function(a){ return a.toUpperCase(); } );
};
capitalize('this IS THE wOrst string eVeR');
输出:“这是有史以来最糟糕的字符串”
更新:
这个解决方案似乎取代了我的:https://stackoverflow.com/a/7592235/104380
我的解决方案:
String.prototype.toCapital = function () {
return this.toLowerCase().split(' ').map(function (i) {
if (i.length > 2) {
return i.charAt(0).toUpperCase() + i.substr(1);
}
return i;
}).join(' ');
};
例子:
'álL riGht'.toCapital();
// Returns 'Áll Right'
还有loctus: https://locutus.io/php/strings/ucwords/,它是这样定义的:
function ucwords(str) {
// discuss at: http://locutus.io/php/ucwords/
// original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
// improved by: Waldo Malqui Silva (http://waldo.malqui.info)
// improved by: Robin
// improved by: Kevin van Zonneveld (http://kvz.io)
// bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)
// bugfixed by: Cetvertacov Alexandr (https://github.com/cetver)
// input by: James (http://www.james-bell.co.uk/)
// example 1: ucwords('kevin van zonneveld')
// returns 1: 'Kevin Van Zonneveld'
// example 2: ucwords('HELLO WORLD')
// returns 2: 'HELLO WORLD'
// example 3: ucwords('у мэри был маленький ягненок и она его очень любила')
// returns 3: 'У Мэри Был Маленький Ягненок И Она Его Очень Любила'
// example 4: ucwords('τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός')
// returns 4: 'Τάχιστη Αλώπηξ Βαφής Ψημένη Γη, Δρασκελίζει Υπέρ Νωθρού Κυνός'
return (str + '').replace(/^(.)|\s+(.)/g, function ($1) {
return $1.toUpperCase();
});
};
推荐文章
- Javascript和regex:分割字符串并保留分隔符
- 如何检查DST(日光节约时间)是否有效,如果是,偏移量?
- 如何打破_。在underscore.js中的每个函数
- 如何在jQuery中获得当前日期?
- 如何创建一个日期对象从字符串在javascript
- 输入触发器按钮单击
- 获取对象的属性名
- 如何检查用户是否可以回到浏览器历史
- 在Android上将字符串转换为整数
- 删除字符串的最后3个字符
- 相当于字符串。jQuery格式
- 如何在vue-cli项目中更改端口号
- Angular 2模板中的标签是什么意思?
- JavaScript .includes()方法的多个条件
- 如何大写一个字符串的第一个字母在省道?