是否有一个简单的方法来转换字符串标题大小写?例如,约翰·史密斯变成了约翰·史密斯。我不是在寻找像John Resig的解决方案那样复杂的东西,只是(希望)一些一两行代码。


当前回答

我的一句话解决方案:

String.prototype.capitalizeWords = function() {
    return this.split(" ").map(function(ele){ return ele[0].toUpperCase() + ele.slice(1).toLowerCase();}).join(" ");
};

然后,可以在任何字符串上调用方法capitalizeWords()。例如:

var myS = "this actually works!";
myS.capitalizeWords();

>>> This Actually Works

我的另一个解决方案:

function capitalizeFirstLetter(word) {
    return word[0].toUpperCase() + word.slice(1).toLowerCase();
}
String.prototype.capitalizeAllWords = function() {
    var arr = this.split(" ");
    for(var i = 0; i < arr.length; i++) {
        arr[i] = capitalizeFirstLetter(arr[i]);
    }
    return arr.join(" ");
};

然后,可以在任何字符串上调用方法capitalizeWords()。例如:

var myStr = "this one works too!";
myStr.capitalizeWords();

>>> This One Works Too

基于Greg Dean回答的替代解决方案:

function capitalizeFirstLetter(word) {
    return word[0].toUpperCase() + word.slice(1).toLowerCase();
}
String.prototype.capitalizeWords = function() {
    return this.replace(/\w\S*/g, capitalizeFirstLetter);
};

然后,可以在任何字符串上调用方法capitalizeWords()。例如:

var myString = "yes and no";
myString.capitalizeWords()

>>> Yes And No

其他回答

我对这个问题的简单版本是:

    function titlecase(str){
    var arr=[];  
    var str1=str.split(' ');
    for (var i = 0; i < str1.length; i++) {
    var upper= str1[i].charAt(0).toUpperCase()+ str1[i].substr(1);
    arr.push(upper);
     };
      return arr.join(' ');
    }
    titlecase('my name is suryatapa roy');

https://lodash.com/docs/4.17.11#capitalize

使用Lodash库!!更可靠的

_.capitalize('FRED'); => 'Fred'

试试这个:

function toTitleCase(str) str归来。replace ( - w \ S * / g, 功能(. txt) { 归来txt.charAt(0). toupfaith (+ txt.substr) 的 ); 的 < form > 输入: <br /><textarea" > < / textarea > < br / >输出: <br /><textarea" > < / textarea > < / form >

试试这个

String.prototype.toProperCase = function(){
    return this.toLowerCase().replace(/(^[a-z]| [a-z]|-[a-z])/g, 
        function($1){
            return $1.toUpperCase();
        }
    );
};

例子

var str = 'john smith';
str.toProperCase();
function titleCase(str) {
    str = str.toLowerCase();

    var strArray = str.split(" ");


    for(var i = 0; i < strArray.length; i++){
        strArray[i] = strArray[i].charAt(0).toUpperCase() + strArray[i].substr(1);

    }

    var result = strArray.join(" ");

    //Return the string
    return result;
}