2013-03-10 20 views
6

私はTwitterのハッシュタグを持つ配列を持っています。そして、私はそれらのハッシュタグの文字列tw.textをフィルタリングし、単語をラップしたいspanJavascript:Text配列内の複数の文字列を置き換えますか?

var hashtags = new Array("home","car", "tree"); 

tw.text.replace('#home', '<span class="hash">#home</span>') 

私はそれをどのように行うのでしょうか?

ありがとうございます。

答えて

4
hashtags.forEach(function (elem) { 
    tw.text = tw.text.replace('#' + elem, '<span class="hash">#' + elem + "</span>"); 
}); 

これは、重複置換を引き起こす可能性のある他のタグを含むタグを考慮していません。

+0

パーフェクト、ありがとう、また、単語の "大文字"バージョンを確認する簡単な方法はありますか? 'HOME、CAR、TREE'のように? – matt

+0

あなたは新しいRegExp( '#' + elem、 'i') 'と' .replace(regexp、 '#\ 0') ' –

3

私はこのような置換を行うための正規表現を構築するでしょう...

var hashtags = new Array("home","car", "tree"); 

var rex = new RegExp("#("+hashtags.join("|")+")",'g') 

tw.text.replace(rex, '<span class="$1">#$1</span>') 

正規表現はとてもすべての置換は、1つのパスで行われ#(thing|another|etc...)なってしまいます。

+0

を使っていただけると思います。 rexでは、純粋な大文字のバージョンのチェックは容易になるはずです。しかし、私はどのように考えていない? – matt

+0

ありがとう、それは '私' – matt

+0

よく、 'i'スイッチは正規表現の大文字小文字を区別しません。つまり、' HoMe'と 'home'と' HOME'にマッチします。正規表現をビルドするときに、すでにグローバルフラグに 'g'を設定している2番目のパラメータにフラグを追加します...' new RegExp( '...'、 'gi') ' –

関連する問題