dis*_*ted 245
String.prototype.capitalize = function() {
return this.replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
};
Run Code Online (Sandbox Code Playgroud)
用法:
'your string'.capitalize(); // -> 'Your String'
Run Code Online (Sandbox Code Playgroud)
修复了Marco Demaio的解决方案,其中前面有空格的第一个字母没有大写.
' javascript'.capitalize(); // -> ' Javascript'
Run Code Online (Sandbox Code Playgroud)可以处理国家符号和重音字母.
'??????? ????? ??????'.capitalize(); // -> '??????? ????? ??????'
'località àtilacol'.capitalize() // -> 'Località Àtilacol'
Run Code Online (Sandbox Code Playgroud)ADD-ON我发现它很有用
String.prototype.capitalize = function(lower) {
return (lower ? this.toLowerCase() : this).replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
};
'javaSCrIPT'.capitalize(); // -> 'JavaSCrIPT'
'javaSCrIPT'.capitalize(true); // -> 'Javascript'
Run Code Online (Sandbox Code Playgroud)
Ivo*_*Ivo 206
使用ES6的箭头函数,在字符串中大写单词的最短实现如下:
'your string'.replace(/\b\w/g, l => l.toUpperCase())
// => 'Your String'
Run Code Online (Sandbox Code Playgroud)
ES5兼容实现:
'your string'.replace(/\b\w/g, function(l){ return l.toUpperCase() })
// => 'Your String'
Run Code Online (Sandbox Code Playgroud)
正则表达式基本匹配给定字符串中每个单词的第一个字母,并仅将该字母转换为大写:
'ÿöur striñg'.replace(/(^|\s)\S/g, l => l.toUpperCase())
Run Code Online (Sandbox Code Playgroud)
此正则表达式匹配给定字符串中的第一个字母和前面有空格的每个非空格字母,并仅将该字母转换为大写:
这里可以使用非捕获组,如下所示,/(?:^|\s)\S/g尽管g我们的正则表达式中的标志无论如何都不会按设计捕获子组.
干杯!
vsy*_*ync 32
function capitalize(s){
return s.toLowerCase().replace( /\b./g, function(a){ return a.toUpperCase(); } );
};
capitalize('this IS THE wOrst string eVeR');
Run Code Online (Sandbox Code Playgroud)
输出:"这是最糟糕的字符串"
看来这个解决方案取代了我的:https://stackoverflow.com/a/7592235/104380
Mar*_*aio 15
只要输入字符串中没有重音字母,vsync提供的答案就会起作用.
我不知道原因,但显然\b在正则表达式中也匹配重音字母(在IE8和Chrome上测试过),所以字符串"località"会被错误地大写转换成"LocalitÀ"(à字母变大写因为正则表达式认为它是单词边界)
一个更通用的功能,也适用于重音字母是这一个:
String.prototype.toCapitalize = function()
{
return this.toLowerCase().replace(/^.|\s\S/g, function(a) { return a.toUpperCase(); });
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用它:
alert( "hello località".toCapitalize() );
Run Code Online (Sandbox Code Playgroud)
小智 7
const capitalizeFirstLetter = s =>
s.split(' ').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')
Run Code Online (Sandbox Code Playgroud)
Ivo 的回答很好,但我更喜欢不匹配,\w因为不需要大写 0-9 和 AZ。我们可以忽略这些,只匹配 az。
'your string'.replace(/\b[a-z]/g, match => match.toUpperCase())
// => 'Your String'
Run Code Online (Sandbox Code Playgroud)
这是相同的输出,但我认为在自记录代码方面更清晰。
由于每个人都给了您所要求的 JavaScript 答案,我将指出 CSS 属性text-transform: capitalize将完全做到这一点。
我意识到这可能不是你所要求的——你没有给我们任何运行它的上下文——但如果它只是为了演示,我肯定会选择 CSS 替代方案。
我的解决方案:
\n\nString.prototype.toCapital = function () {\n return this.toLowerCase().split(' ').map(function (i) {\n if (i.length > 2) {\n return i.charAt(0).toUpperCase() + i.substr(1);\n }\n\n return i;\n }).join(' ');\n};\nRun Code Online (Sandbox Code Playgroud)\n\n例子:
\n\n'\xc3\xa1lL riGht'.toCapital();\n// Returns '\xc3\x81ll Right'\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
173468 次 |
| 最近记录: |