2 単語の都市名のように、各単語の最初の文字を大文字にするにはどうすればよいでしょうか? [重複] 質問する

2 単語の都市名のように、各単語の最初の文字を大文字にするにはどうすればよいでしょうか? [重複] 質問する

私の JS は、都市に 1 つの単語がある場合にうまく機能します。

  • シカゴ ==> シカゴ

しかし、

  • サンディエゴ ==> サンディエゴ

どうすればサンディエゴになるのでしょうか?

function convert_case() {
    document.profile_form.city.value =
        document.profile_form.city.value.substr(0,1).toUpperCase() + 
        document.profile_form.city.value.substr(1).toLowerCase();
}

ベストアンサー1

良い答えがあるここ:

function toTitleCase(str) {
    return str.replace(/\w\S*/g, function(txt){
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
}

または ES6 では:

var text = "foo bar loo zoo moo";
text = text.toLowerCase()
    .split(' ')
    .map((s) => s.charAt(0).toUpperCase() + s.substring(1))
    .join(' ');

おすすめ記事