我需要使用ActionScript 3(AS3)在本文中找到所有哈希标记:
Lorem ipsum dolor #sit_amet,consetetur sadipcing,sed#diam-nonumy eirmod tempor #invidunt ut labore #et
这样做的好方法是什么? 谢谢 弗兰克
答案 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"), ""));