破折号或斜杠后将字符串转换为标题大小写

时间:2017-05-04 14:33:11

标签: javascript string capitalization capitalize

我使用这个常用功能将我的大多数列表项转换为标题大小写,没有任何问题。我发现有一个地方需要改进,当中间有一个破折号或斜线时,我希望下一个字母大写。

例如西班牙裔/拉丁裔应该是西班牙裔/拉丁裔。基本上大写第一个字母或以符号或空格开头。

当前代码:

function toTitleCase(str) {
    return str.toLowerCase().replace(/(?:^|\s)\w/g, function (match) {
        return match.toUpperCase();
    });
}

3 个答案:

答案 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"));