2017-02-02 23 views
2

を変換し、私はいくつかのテキストに変換するケースを実行しているいくつかのJavaScriptを持っている:jQueryの文ケース

$(".container").click(function(){ 
    text = text.toLowerCase().replace(/\b[a-z]/g, function(block){ 
    return block.toUpperCase(); 
}); 

ケース条項するために、コンテナのdivに指定されたテキストを返します。しかしアポストロフィは、このような

can't get this to work 

として、テキストで使用されるとき、それは

どのようにアポストロフィ滞在小文字の後にTを末尾ことを行うことができます
Can'T Get This To Work 

を返しますか?

+1

可能な重複(http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript) –

答えて

1

あなたの表現が動作しない理由は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" 
+0

ありがとう、これは私が必要としていたものです! – Jordan