如何使JavaScript中的所有单词的第一个字符大写?

我已经寻找解决方案,但没有找到。

我有以下字符串。

1. hello
2. HELLO
3. hello_world
4. HELLO_WORLD
5. Hello World

我想将它们转换为以下内容:

1. Hello
2. Hello
3. HelloWorld
4. HelloWorld
5. HelloWorld

如果字符串中没有空格和下划线,则首先使用大写字母,而其他字母使用小写字母。 如果单词由下划线或空格分隔,则每个单词的大写首字母并删除空格和下划线。 我怎样才能在JavaScript中做到这一点。

谢谢


你可以做这样的事情:

function toPascalCase(str) {
    var arr = str.split(/s|_/);
    for(var i=0,l=arr.length; i<l; i++) {
        arr[i] = arr[i].substr(0,1).toUpperCase() + 
                 (arr[i].length > 1 ? arr[i].substr(1).toLowerCase() : "");
    }
    return arr.join("");
}

你可以在这里测试它,这个方法非常简单,当找到空格或下划线时,将字符串分割.split()成一个数组。 然后循环访问数组,第一个字母是上层,第二个是下层,然后是数组,然后将这些标题大小写字母和.join()再次合并为一个字符串。


这是一个正则表达式解决方案:

首先小写字符串:

 str = str.toLowerCase();

用大写字符替换单词中的所有_和空格和第一个字符:

 str = str.replace(/(?:_| |b)(w)/g, function(str, p1) { return p1.toUpperCase()})

DEMO

更新:减少步骤;)

说明:

/            // start of regex
 (?:         // starts a non capturing group
   _| |b    // match underscore, space, or any other word boundary character 
             // (which in the end is only the beginning of the string ^)
  )          // end of group
 (           // start capturing group
  w         // match word character
 )           // end of group
/g           // and of regex and search the whole string

捕获组的值在函数中可用作p1 ,并且整个表达式由函数的返回值替换。


function foo(str) {
    return $(str.split(/s|_/)).map(function() {
        return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
    }).get().join("");
}

工作演示: http : //jsfiddle.net/KSJe3/3/(我在演示中使用了Nicks正则表达式)


编辑:代码的另一个版本 - 我用$ .map()替换了map():

function foo(str) {
    return $.map(str.split(/s|_/), function(word) {
        return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
    }).join("");
}

工作演示: http : //jsfiddle.net/KSJe3/4/

链接地址: http://www.djcxy.com/p/37757.html

上一篇: How to make first character uppercase of all words in JavaScript?

下一篇: Recursively remove null values from JavaScript object