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

Convert string to title case after dash or slash

我使用这个常用函数将我的大部分列表项毫无问题地转换为首字母大写。我发现了一个需要改进的地方,当中间有一个破折号或斜杠时,我希望下一个字母大写。

例如 Hispanic/latino 应该是 Hispanic/Latino。基本上当第一个字母或后面有一个符号 OR a space.

时大写

当前代码:

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

只需在正则表达式中添加或条件 /(?:^|\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'))

只需更改您对空格的捕获 \s,将字符 class 设为空格、连字符或斜线 [\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"));

这是一个去除破折号的解决方案。所以对于以下输入:

list-item

它returns:

ListItem

实现此目的的 Jamiec 解决方案的扩展是:

function toTitleCase(str) {
    return str.toLowerCase().replace(/(?:^|[\s-/])\w/g, function (match) {
        return match.toUpperCase();
    }).replace('-', '');
}
console.log(toTitleCase("list-item"));