是否有一个简单的方法来转换字符串标题大小写?例如,约翰·史密斯变成了约翰·史密斯。我不是在寻找像John Resig的解决方案那样复杂的东西,只是(希望)一些一两行代码。
当前回答
吉姆-鲍勃->吉姆-鲍勃
吉姆/鲍勃->吉姆/鲍勃
jim_bob -> jim_bob
不是->不是
学校->学校
麦当劳->麦当劳
function toTitleCase(str) {
return str.replace(/\p{L}+('\p{L}+)?/gu, function(txt) {
return txt.charAt(0).toUpperCase() + txt.slice(1)
})
}
其他回答
使用正则表达式的一行程序,获取单词\b[A- za -z]的所有\g开头字符,并应用.toUpperCase()
const textString = "用Javascript将字符串转换为标题大小写。"; const convert = textString。替换(/ \ [a-zA-Z] b / g,(比赛)= > match.toUpperCase ()); console.log(转换)
这是个测试——>这是个测试
函数大写(str) { Const word = []; For (let char of str.split(' ')) { word.push(char[0].toUpperCase() + char.slice(1)) } 返回的词。加入(' '); } Console.log(大写("this is a test"));
如果你可以在你的代码中使用第三方库,那么lodash为我们提供了一个帮助函数。
https://lodash.com/docs/4.17.3#startCase
_。startCase (foo栏); // => 'Foo Bar' _.startCase(“——foo bar”); // => 'Foo Bar' _.startCase(“fooBar”); // => 'Foo Bar' _.startCase(“__FOO_BAR__”); // => ' foo bar '
如果上述解决方案中使用的正则表达式让你感到困惑,试试下面的代码:
function titleCase(str) {
return str.split(' ').map(function(val){
return val.charAt(0).toUpperCase() + val.substr(1).toLowerCase();
}).join(' ');
}
试试这个
String.prototype.toProperCase = function(){
return this.toLowerCase().replace(/(^[a-z]| [a-z]|-[a-z])/g,
function($1){
return $1.toUpperCase();
}
);
};
例子
var str = 'john smith';
str.toProperCase();