我使用这个常用功能将我的大多数列表项转换为标题大小写,没有任何问题。我发现有一个地方需要改进,当中间有一个破折号或斜线时,我希望下一个字母大写。
例如西班牙裔/拉丁裔应该是西班牙裔/拉丁裔。基本上大写第一个字母或以符号或空格开头。
当前代码:
function toTitleCase(str) {
return str.toLowerCase().replace(/(?:^|\s)\w/g, function (match) {
return match.toUpperCase();
});
}
答案 0 :(得分:3)
只需更改对空白\s
的捕获,就可以将一类字符变为空格,连字符或斜线[\s-/]
(以及您想要的任何其他内容)
function toTitleCase(str) {
return str.toLowerCase().replace(/(?:^|[\s-/])\w/g, function (match) {
return match.toUpperCase();
});
}
console.log(toTitleCase("test here"));
console.log(toTitleCase("test/here"));
console.log(toTitleCase("test-here"));

答案 1 :(得分:2)
只需在正则表达式/(?:^|\s|\/|\-)\w/g
function toTitleCase(str) {
return str.toLowerCase().replace(/(?:^|\s|\/|\-)\w/g, function (match) {
return match.toUpperCase();
});
}
console.log(toTitleCase('His/her new text-book'))
答案 2 :(得分:1)
这是去除破折号的解决方案。因此,对于以下输入:
list-item
它返回:
ListItem
Jamiec解决方案的扩展将实现以下目标:
function toTitleCase(str) {
return str.toLowerCase().replace(/(?:^|[\s-/])\w/g, function (match) {
return match.toUpperCase();
}).replace('-', '');
}
console.log(toTitleCase("list-item"));