2011-06-02 39 views
0

我需要找到在使用ActionScript 3(AS3)本文所有哈希標籤內的所有哈希標籤:查找文本

Lorem存有悲#sit_amet,consetetur sadipscing,sed的直徑#,nonumy eirmod tempor #invidunt ut labore #et

這樣做的好方法是什麼? 謝謝 弗蘭克

+0

我從未聽說過之前「主題標籤」的,但一個快速搜索顯示了大量的Twitter垃圾。因此,據說Twitter的文檔應該至少有一個列表,這就是你需要開始你的「hashtag's」列表的地方,那麼你可以在你編譯列表後解析它們。 – 2011-06-02 22:56:35

回答

1
// 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 
+0

實際上,您將整個比賽分組,並且您也會匹配單個哈希值。黑名單,而不是白名單也許會更容易,這是一個這樣的正則表達式的開始:/#[^ \ s,] +/g – 2011-06-02 23:43:02

+0

非常感謝! RegExp非常有趣。是否還有一種聰明的方法可以在文本之後從文本中刪除找到的標籤? – Frank 2011-06-03 00:45:31

+0

我已用新的答案回答了此問題。 – TheDarkIn1978 2011-06-03 04:28:51

1

詳細闡述「發現」,因爲我不知道你想怎麼處理它們。

那說,這可能會滿足您的需求:

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:等

如果這並不完全是你之後的話,那麼你可能需要研究超出我的知識範圍的正則表達式。

0

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"), "")); 
+0

我沒有得到它的工作。我試圖刪除兩個哈希字符之間的所有單詞。這是我的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

+0

看到編輯答案 – TheDarkIn1978 2011-06-04 06:42:06