我需要找到在使用ActionScript 3(AS3)本文所有哈希標籤內的所有哈希標籤:查找文本
Lorem存有悲#sit_amet,consetetur sadipscing,sed的直徑#,nonumy eirmod tempor #invidunt ut labore #et
這樣做的好方法是什麼? 謝謝 弗蘭克
我需要找到在使用ActionScript 3(AS3)本文所有哈希標籤內的所有哈希標籤:查找文本
Lorem存有悲#sit_amet,consetetur sadipscing,sed的直徑#,nonumy eirmod tempor #invidunt ut labore #et
這樣做的好方法是什麼? 謝謝 弗蘭克
// your data:
var data:String = "Lorem ipsum dolor #sit_amet, consetetur sadipscing, sed #diam-nonumy eirmod tempor #invidunt ut labore #et";
// this regular expression will match most "normal" characters, add more as needed
// it will stop at the first whitespace or linebreak it hits
var regex:RegExp = /(\#[a-zA-Z0-9_%-]*)/g;
// this object will be used to store our results
var result:Object;
// now, we run the regex until it returns null,
// that means there's nothing more that matches
while (result = regex.exec(data)) {
// since we're not using groups or anything, all we want is the 0 in the object
trace(result[0]);
}
這將跟蹤:
#sit_amet
#diam-nonumy
#invidunt
#et
實際上,您將整個比賽分組,並且您也會匹配單個哈希值。黑名單,而不是白名單也許會更容易,這是一個這樣的正則表達式的開始:/#[^ \ s,] +/g – 2011-06-02 23:43:02
非常感謝! RegExp非常有趣。是否還有一種聰明的方法可以在文本之後從文本中刪除找到的標籤? – Frank 2011-06-03 00:45:31
我已用新的答案回答了此問題。 – TheDarkIn1978 2011-06-03 04:28:51
詳細闡述「發現」,因爲我不知道你想怎麼處理它們。
那說,這可能會滿足您的需求:
var str:String = "Lorem ipsum dolor #sit_amet, consetetur sadipscing, sed #diam-nonumy eirmod tempor #invidunt ut labore #et";
var array:Array = str.split("#");
你的陣列將包含以下 - 你可以用哈希預先考慮再次得到一個主題標籤:
0:Lorem存有悲
1:sit_amet,consetetur sadipscing,sed的
2:直徑-nonumy eirmod tempor
3:invidunt UT labore
4:等
如果這並不完全是你之後的話,那麼你可能需要研究超出我的知識範圍的正則表達式。
RE:有沒有也 一個聰明的方式從文本 然後刪除找到的標籤?
你只是想刪除實際的散列標籤或散列標籤及其標籤的詞嗎?
這會從字符串中刪除只哈希標籤:
myString.replace(new RegExp("#", "g"), ""));
,而這將刪除哈希標籤,並從字符串的標籤字:
myString.replace(new RegExp("#\\w*", "g"), "")
一個完整的教程和正則表達式的參考可以在這裏找到:http://www.regular-expressions.info/
-
編輯:
它有點複雜,因爲您要替換散列標籤之間的部分字符串,而整個字符串本質上是整個散列標籤之間。因此,如果不編寫自己的字符串分析器,使用簡單的正則表達式查找將不會很簡單。
,但這樣的事情可以工作:
var stringData:String = "#Lorem # et #ipsum dolor #sit_amet, consetetur sadipscing, sed #diam et #word# #_hello_# #-word# #word# #1a# #2WORD2# #2012# #word-3# #word_3# #word 3#";
trace(stringData.replace(new RegExp("#(.*?)#", "g"), ""));
我沒有得到它的工作。我試圖刪除兩個哈希字符之間的所有單詞。這是我的AS3代碼:'var mystring =「#Lorem#et #ipsum dolor #sit_amet,consetetur sadipscing,sed #diam et#word##_hello_##word##word#########2WORD2##2012# #word-3##word_3##word 3#「; // var regex:RegExp = /(\#[a-zA-Z0-9 _% - ] *#)/ g; var myresult:Object; // 功能removewords(){ 而(myresult = regex.exec(MyString的)){ 了mystring = mystring.replace(myresult [0], 「」) } // 跡(MyString的) } // removewords() '看起來數字問題有問題。有任何想法嗎? – Frank 2011-06-03 22:28:01
看到編輯答案 – TheDarkIn1978 2011-06-04 06:42:06
我從未聽說過之前「主題標籤」的,但一個快速搜索顯示了大量的Twitter垃圾。因此,據說Twitter的文檔應該至少有一個列表,這就是你需要開始你的「hashtag's」列表的地方,那麼你可以在你編譯列表後解析它們。 – 2011-06-02 22:56:35