有没有一种简单的方法可以将字符串转换为标题大小写?例如john smith
变成John Smith
。我不是在寻找像John Resig 的解决方案那样复杂的东西,只是(希望)某种单线或双线。
使用 JavaScript 将字符串转换为标题大小写
IT技术
javascript
title-case
2021-01-27 01:49:39
6个回答
尝试这个:
function toTitleCase(str) {
return str.replace(
/\w\S*/g,
function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
}
);
}
<form>
Input:
<br /><textarea name="input" onchange="form.output.value=toTitleCase(this.value)" onkeyup="form.output.value=toTitleCase(this.value)"></textarea>
<br />Output:
<br /><textarea name="output" readonly onclick="select(this)"></textarea>
</form>
如果 CSS 解决方案满足您的需求,您可以将text-transform CSS 样式应用于您的控件:
text-transform: capitalize;
要知道,这将改变:
hello world
到Hello World
HELLO WORLD
到HELLO WORLD
(无变化)
emily-jane o'brien
至Emily-jane O'brien
(不正确)
Maria von Trapp
到Maria Von Trapp
(不正确)
一种更优雅的方式,适应 Greg Dean 的功能:
String.prototype.toProperCase = function () {
return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
};
像这样称呼它:
"pascal".toProperCase();
这是我的版本,IMO 也很容易理解和优雅。
var str = "foo bar baz"
console.log(
str.split(' ')
.map(w => w[0].toUpperCase() + w.substr(1).toLowerCase())
.join(' ')
)
// returns "Foo Bar Baz"
这是我的函数,它转换为标题大小写,但也将定义的首字母缩略词保留为大写,将次要单词保留为小写:
String.prototype.toTitleCase = function() {
var i, j, str, lowers, uppers;
str = this.replace(/([^\W_]+[^\s-]*) */g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
// Certain minor words should be left lowercase unless
// they are the first or last words in the string
lowers = ['A', 'An', 'The', 'And', 'But', 'Or', 'For', 'Nor', 'As', 'At',
'By', 'For', 'From', 'In', 'Into', 'Near', 'Of', 'On', 'Onto', 'To', 'With'];
for (i = 0, j = lowers.length; i < j; i++)
str = str.replace(new RegExp('\\s' + lowers[i] + '\\s', 'g'),
function(txt) {
return txt.toLowerCase();
});
// Certain words such as initialisms or acronyms should be left uppercase
uppers = ['Id', 'Tv'];
for (i = 0, j = uppers.length; i < j; i++)
str = str.replace(new RegExp('\\b' + uppers[i] + '\\b', 'g'),
uppers[i].toUpperCase());
return str;
}
例如:
"TO LOGIN TO THIS SITE and watch tv, please enter a valid id:".toTitleCase();
// Returns: "To Login to This Site and Watch TV, Please Enter a Valid ID:"
其它你可能感兴趣的问题