あなたの表現が動作しない理由はword boundary, \b
ので、(^\w|\w$|\W\w|\w\W)
の略であり、そしてそれは、文字'
後、あなたのケースでは、それは、t
た選択されていたことを意味している'
文字が含まれていません。
あなたは/(^|\s)[a-z]/g
だろう(^|\s)
と\b
を、置き換えることができ、それはあなたのケースで動作します:
$(".container").click(function() {
text = text.toLowerCase().replace(/(^|\s)[a-z]/g, function(block) {
return block.toUpperCase();
});
});
しかし
は、最善のアプローチは、正規表現\w\S*
、意志を使用することです任意の単語文字(つまり、[a-zA-Z0-9_]
)とそれに続く任意の非文字列(つまり、[^\r\n\t\f ]
)を選択します。
これにより、各単語の部分文字列を選択することができます。そこから、あなたが最初の文字を大文字と小文字に残りの文字を変換することができます。例えば
$(".container").click(function() {
text = text.replace(/\w\S*/g, function(word) {
return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
});
});
を、次のスニペットを返します:[JavaScriptを使用してタイトルケースに文字列を変換]の
"can't get this to work".replace(/\w\S*/g, function(word) {
return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
});
// > "Can't Get This To Work"
可能な重複(http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript) –