3

私はこのスレッドhttps://stackoverflow.com/a/3471258/2117845 に似た何かをしようとしていますが、Harmenのようなものをjqueryコードで投稿して、プラグインになっていると言いましたか?

私が持っているのは、データベースからのすべての大文字のタイトルです。例えば:

クイックブラウンフォックスは、柵を飛び越えようとしています

私は次のようになりたい:

クイックブラウンフォックスがフェンスを飛び越えようとしています

では、CSSとjQueryを使用してこれを行い、テキストを変換して特定の単語が適切なケースに変換されないようにする方法はありますか?しかし、私は最初のインスタンスを保持する必要があると思います。「the、is、to、and」を削除した場合のように、タイトルの最初の「the」はすべて小文字になります。それで、それが最初の単語でない場合にのみ、どういうわけかそれらの一般的な単語を排除することができるでしょうか?

私はそれがたくさんあることを知っていますが、私はjQueryにあまり精通していません。このようなことを行う方法を示すチュートリアルまたはプラグインはどこかにありますか?すべて大文字のテキストを変換する方法について多くの質問を見てきましたので、解決策はおそらく非常に便利です。

4

2 に答える 2

5

関連する質問のGregDeanの回答からコードを変更しました。

このアルゴリズムは、実際には英語の大文字と小文字の規則を評価していないため、せいぜい知識に基づいた推測と呼んでいます。精度を上げるには、おそらくnoCapsリストに単語を追加する必要があります。

JS

var ele = $('p'); 
ele.text(toProperCase(ele.text())); 

function toProperCase(str)
{
    var noCaps = ['of','a','the','and','an','am','or','nor','but','is','if','then', 
'else','when','at','from','by','on','off','for','in','out','to','into','with'];
    return str.replace(/\w\S*/g, function(txt, offset){
        if(offset != 0 && noCaps.indexOf(txt.toLowerCase()) != -1){
            return txt.toLowerCase();    
        }
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
}

HTML

<p>THE QUICK BROWN FOX IS ABOUT TO JUMP OVER THE FENCE</p>
于 2013-02-28T03:24:52.773 に答える
0

ハーメンがあなたのニーズに合うようにコードを変更しました。JSファイル内に配置します。

jQuery.fn.ucwords = function() {
   return this.each(function(){
      var val = $(this).text().toLowerCase(), newVal = '';
      val = val.split(' ');

      for(var c=0; c < val.length; c++) {
         if (c>0 && val[c]=="is" || c>0 && val[c]=="to" || c>0 && val[c]=="the"){
             newVal+=val[c]+' ';
         } else newVal += val[c].substring(0,1).toUpperCase() + val[c].substring(1,val[c].length) + (c+1==val.length ? '' : ' ');

      }
      $(this).text(newVal);
  });
}

$(document).ready(function(e) {
    $('p.link').ucwords();
});

例のHTML

<p class="link">THE QUICK BROWN FOX IS ABOUT TO JUMP OVER THE FENCE</p>

とJSFiddleforyou http://jsfiddle.net/fqEvX/

于 2013-02-28T03:16:23.133 に答える