在 Javascript 中将任何类型的字符串更改为标题大小写

Change any type of string to Title Case in Javascript

本文关键字:标题 大小写 字符串 Javascript 任何 类型      更新时间:2023-09-26

我想编写一个函数,可以将任何类型的字符串大小写(即小写,大写,驼峰大小写,snake_case,lisp-case)更改为标题大小写

我不是在寻找非常复杂的东西,只是一个简单的一两个衬里。

我尝试使用一些正则表达式,例如

function(input) {
    return input.replace(/([^'W_]+[^'s_]*) */g, function(txt){
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
};

它适用于某些情况,但并非在所有情况下都有效

function titleCase(s) { 
    return s
        .replace(/([^A-Z])([A-Z])/g, '$1 $2') // split cameCase
        .replace(/[_'-]+/g, ' ') // split snake_case and lisp-case
        .toLowerCase()
        .replace(/(^'w|'b'w)/g, function(m) { return m.toUpperCase(); }) // title case words
        .replace(/'s+/g, ' ') // collapse repeated whitespace
        .replace(/^'s+|'s+$/, ''); // remove leading/trailing whitespace
}

例:

['UPPER CASE', 'camelCase', 'snake_case', 'lisp-case'].map(titleCase)
// result: ["Upper Case", "Camel Case", "Snake Case", "Lisp Case"]

试试这个:

var titleCase = oldString
               .replace(/([a-z])([A-Z])/g, function (allMatches, firstMatch, secondMatch) {
                     return firstMatch + " " + secondMatch;
               })
               .toLowerCase()
               .replace(/([ -_]|^)(.)/g, function (allMatches, firstMatch, secondMatch) {
                     return (firstMatch ? " " : "") + secondMatch.toUpperCase();
               }
);

工作小提琴

工作小提琴2