2012-01-18 8 views
1

私はこのような文字列を得た:この種のデータをどのように抽出して素敵な配列に入れるのですか?

var tweet ="@fadil good:))RT @finnyajja: what a nice day RT @fadielfirsta: how are you? @finnyajja yay"; 

@文字を持つ任意の単語を抽出するために、コードの種類を動作するはずですし、また言葉の終わりに特別な文字を削除しましたか?それは、このような配列になります。私は次のコードを試してみました

(@fadil, @finnyajja, @fadielfirsta, @finnyajja); 

は:

var users = $.grep(tweet.split(" "), function(a){return /^@/.test(a)}); 

それはこの返します: ':' 文字末尾にコロンがまだあります

(@fadil, @finnyajja:, @fadielfirsta:, @finnyajja) 

いくつかの言葉の。私は何をすべきか?どんな解決人?あまりにも多くのあなたの現在のコードを変更せずに感謝

答えて

2

分割を使用しようとするよりも簡単ですコードです:

var tweet_text ="@fadil good:))RT @finnyajja: what a nice day RT @fadielfirsta: how are you? @finnyajja yay"; 

var result = tweet_text.match(/@\w+/g); 
+0

うわー。それは完全に動作します!ありがとうございました :-)。この正規表現のものは私のために厳しいです。しかし、あなたはそれを本当に簡単に見えるようにします。 – under5hell

+0

もう一度質問してください。どの正規表現にマッチさせるために正規表現を使うべきかは、文字列中の 'http://'で始まります。あなたが推測するように、私は文字列内のURLを見つけようとしました。ありがとうございます:-) – under5hell

+0

https://www.google.com/search?q=regex+to+match+url :) – BNL

2

最も簡単な方法は、直前の呼び出しの分割にすべてのコロンを削除するには、次のようになります。また、あなたはmatchを使用するためのすべての作業を行うための正規表現を書くことができ

var users = $.grep(tweet_text.replace(":","").split(" "), function(a){return /^@/.test(a)}); 

。このような何か:

var regex = /@[a-z0-9]+/gi; 
var matches = tweet.match(regex); 

これは、あなたが文字と数字のみを望んでいることを前提とその他の特定の文字が許可されている場合は、この正規表現は変更する必要があります。ここで

http://jsfiddle.net/YHM87/

+0

は、それが動作します。どうもありがとうございます:-) – under5hell