查找文本中的所有哈希标记

时间:2011-06-02 22:42:02

标签: actionscript-3

我需要使用ActionScript 3(AS3)在本文中找到所有哈希标记:

  

Lorem ipsum dolor #sit_amet,consetetur   sadipcing,sed#diam-nonumy   eirmod tempor #invidunt ut labore #et

这样做的好方法是什么? 谢谢 弗兰克

3 个答案:

答案 0 :(得分: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 ipsum dolor
1:sit_amet,consetetur sadipscing,sed
2:diam-nonumy eirmod tempor
3:invidunt ut labore
4:et

如果这不是你所追求的,那么你可能需要研究超出我的知识范围的正则表达式。

答案 1 :(得分: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

答案 2 :(得分:0)

  

RE:还有一种聪明的方法吗?   从文本中删除找到的标签   事后?

您是否只想删除实际的哈希标记或哈希标记及其标记的单词?

这将仅删除字符串中的hash-tag:

myString.replace(new RegExp("#", "g"), ""));

虽然这将从字符串中删除hash-tag及其标记的单词:

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