【问题标题】:AS3 - Get tags from textAS3 - 从文本中获取标签
【发布时间】:2012-03-19 22:48:25
【问题描述】:

如何在文本末尾找到带有散列 (#Example #FOO #hello_world #foo-bar #2012) 的标签,而不是文本中的标签?

Lorem ipsum dolor http://www.example.com/#about consetetur #sit_amet, consetetur sadipscing, sed #diamnonumy eirmod tempor #invidunt ut labore #Example #FOO #hello_world #foo-bar #2012

谢谢。乌力

【问题讨论】:

  • #sit_amet,#diamnonumy,#invidunt怎么样

标签: actionscript-3 flash


【解决方案1】:

这和 sub_stantial 的做法很像,虽然我总觉得最好用数组来操作:

function returnEndHashtags(message:String):Array
{
    var lastHashtagIndex:int;
    var words:Array = message.split(" ");
    var l:int = words.length;

    for (var i = l-1; i > -1; i--)
    {
        if (!(words[i].toString().charAt(0) == "#"))
        {
            lastHashtagIndex = i + 1;
            break;
        }
    }

    return words.slice(lastHashtagIndex);
}
  1. 从文本中创建一个单词数组。
  2. 从数组末尾开始迭代,找到最后一个以“#”开头的单词。
  3. 返回从最后一个以“#”开头的单词到数组结尾的单词数组。

让我们希望有一个向导出现并告诉我们如何使用正则表达式来做到这一点。

【讨论】:

  • 我需要从文本中删除找到的标签。如果句子中的最后一个单词被标记为标签,则会出现问题,因为它也被删除了。有人看到解决此问题的解决方案吗?
【解决方案2】:

算法应该是这样的:

  1. 从行尾开始阅读
  2. 读一个单词(检查空格以获取单词)
  3. 检查 '#' 作为该单词的第一个字符
  4. 如果是,将其推送到您的哈希标签列表中,转到第 2 步
  5. 否则,退出

【讨论】:

    【解决方案3】:

    使用这个正则表达式在末尾找到带有标签的单词列表:

    /(\s?#([\w-])+)+$/g
    

    然后使用它来查找其中的所有标签:

    /#[\w-]+/g
    

    与往常一样,请参阅docs 了解有关如何使用正则表达式的详细信息,以及非常出色的 RegExr 进行快速而肮脏的测试。

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 1970-01-01
      • 2015-10-06
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多