将字符串中的单词大写
2022-08-30 01:01:57
将字符串中的单词大写的最佳方法是什么?
/**
* Capitalizes first letters of words in string.
* @param {string} str String to be modified
* @param {boolean=false} lower Whether all other letters should be lowercased
* @return {string}
* @usage
* capitalize('fix this string'); // -> 'Fix This String'
* capitalize('javaSCrIPT'); // -> 'JavaSCrIPT'
* capitalize('javaSCrIPT', true); // -> 'Javascript'
*/
const capitalize = (str, lower = false) =>
(lower ? str.toLowerCase() : str).replace(/(?:^|\s|["'([{])+\S/g, match => match.toUpperCase());
;
capitalize(' javascript'); // -> ' Javascript'
capitalize('бабушка курит трубку'); // -> 'Бабушка Курит Трубку'
capitalize('località àtilacol') // -> 'Località Àtilacol'
capitalize(`"quotes" 'and' (braces) {braces} [braces]`); // -> "Quotes" 'And' (Braces) {Braces} [Braces]
使用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'
正则表达式基本上匹配给定字符串中每个单词的第一个字母,并且仅将该字母转换为大写字母:
'ÿöur striñg'.replace(/(^|\s)\S/g, l => l.toUpperCase())
此正则表达式匹配给定字符串中第一个字母和前面带有空格的每个非空格字母,并仅将该字母转换为大写字母:
非捕获组可以按如下方式在此处使用,尽管正则表达式中的标志无论如何都不会捕获子组。/(?:^|\s)\S/g
g
干杯!