2012-03-04 6 views
0

私はパラグラフを持っており、100文字以上150文字未満の第1部分を取得したいと思います。 (文末)。ですから、基本的には、100文字以上150文字以下のテキストを取得したいのですが、文章の途中では切り取らないようにしたいと考えています。私はJqueryでこれを行う必要があります。jqueryを使用してトリッキーな正規表現パターンに基づいてコンテンツから部分文字列を取得

<p id="post">Content here content here content here content here content here content here. More content</p>

+0

jqueryプラグインを検索しましたか?私は同様の機能を持つプラグインを見てきましたが(正確にはそうではないにしても)、残念ながら私は名前を覚えていません。これらのプラグインがあなたのニーズを正確に満たしていない場合は、開始するのが良いポイントかもしれません。 –

答えて

0

ので、我々は我々が

// get paragraphs, and filter it to match only ones greater than 100 in length 
$('p').filter(function(){ 
    if ($(this).text().length > 100 && $(this).text().length < 150) 
    return true 
    else 
    return false 
    // get the `text` of the paragraph, and replace everything after a period after 100 words 
}).text().replace(/(.{100,150})\..+$/,'$1') 

正規表現を使用して作業しているかを見ることができます。これは、あなたのために働くはずですが、あなたのコードをポストする必要があります/、キャプチャ((...))で区切られた任意の文字( .)に続いて100~150回({100,150})、続いて(エスケープ\.のいずれかの文字の後に任意の文字.を1回以上(+)、最後に)。最初の文字をキャプチャして、.(100〜150文字)にします。


編集:ケースで、それはあなたに便利です...

これは、質問と全く同じではなく、それはstart値よりも短い場合、文字列を返す、またはそれをチョップ.startlimitの間にあるか、一致しない場合はlimitにチョップするだけです。

/** 
* @returns string Text from inside matched element (or concatenated elements) 
*  but cute off after the start, and before the limit on any available `.` 
*  or returns short strings, or cuts off at limit where there is no match 
*/ 
$.fn.cutNicely = function(start, limit){ 
    var regex = new RegExp("(.{" + start + "," + limit + "}\\.).+$") 
    return this.text().substr(0,limit).replace(regex,'$1') 
} 

// usage: 
$('p').cutNicely(80,150) 
+0

これは実際には非常に便利で基本的なことです。私は一般的な解決策を作成し、それを私のライブラリに追加するかもしれません。私は、$(セレクタ).chopNicely(100,150) 'を使ってテキストを切り捨て、常に150文字以下にする必要があると思っていますが(残酷なカットが必要な場合でも)、100の後に適切な場所を適切にカットしようとしますchars。 –

関連する問題