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

例如,西类牙裔/拉丁美洲人应该是西类牙裔/拉丁美洲人。基本首字母大写或以符号或空格开头。

当前代码:

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

最佳答案

只需将您捕获的空白\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"));

09-11 01:04