6

このコードを作成しました。これには小さな正規表現が必要です。

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
} 
String.prototype.initCap = function () {
    var new_str = this.split(' '),
        i,
        arr = [];
    for (i = 0; i < new_str.length; i++) {
        arr.push(initCap(new_str[i]).capitalize());
    }
    return arr.join(' ');
}
alert("hello world".initCap());

フィドル

私が欲しいもの

"hello world".initCap() => Hello World

"hEllo woRld".initCap() => Hello World

上記のコードで解決策が得られますが、正規表現を使用したより優れた高速なソリューションが必要です

4

4 に答える 4

22

あなたが試すことができます:

  • 文字列全体を小文字に変換する
  • 次に、replace() メソッドを使用して最初の文字を変換し、各単語の最初の文字を大文字に変換します

str = "hEllo woRld";
String.prototype.initCap = function () {
   return this.toLowerCase().replace(/(?:^|\s)[a-z]/g, function (m) {
      return m.toUpperCase();
   });
};
console.log(str.initCap());

于 2013-11-08T16:03:56.937 に答える