【问题标题】:Ruby - converting a hashtag to actual word(s) ? (#contentmarketing => content marketing) [closed]Ruby - 将主题标签转换为实际单词? (#contentmarketing => 内容营销)[关闭]
【发布时间】:2013-11-22 17:00:03
【问题描述】:

标签有时会结合两个或多个单词,例如:

content marketing => #contentmarketing

如果我有一堆主题标签分配给一篇文章,并且该词在那篇文章中,即content marketing。如何获取该主题标签并检测构成该主题标签的单词?

如果主题标签是一个单词,这很简单:只需在文章中查找该单词即可。但是,如果哈希标签是两个或更多单词怎么办?我可以简单地将主题标签拆分为所有可能的索引,然后检查产​​生的两个词是否在文章中。

所以对于#contentmarketing,我会检查以下单词:

  • 内容营销
  • 内容营销
  • 内容营销
  • ...
  • 内容营销
  • ...

但是,如果主题标签中有三个或更多单词,则此操作会失败,除非我递归拆分它,但这似乎很不雅。

同样,这是假设哈希标签中的单词在文章中。

【问题讨论】:

    标签: ruby-on-rails ruby regex twitter


    【解决方案1】:

    您可以在每个字符之间使用带有可选空格的正则表达式来执行此操作:

    your_article =~ /#{hashtag.chars.to_a.join(' ?')}/
    

    【讨论】:

    • 该死,那是快速..优雅...而且简单。
    • 应该是 /#{hashtag.chars.to_a.join(' ?')}/ 吗?
    • @HenleyChiu:是的 - 更新
    【解决方案2】:

    根据主题标签的要求,我可以想到两种可能的解决方案:

    1. 假设主题标签必须由单词组成,并且不能是诸如“#abfgtest”之类的非单词:

      Do the test similar to your answer above but only test the first part of the string. If the test fails then add another character and try again until you have a word. Then repeat this process on the remaining string until you have found each word. So using your example it would first test:
      
      - c
      - co
      - ...
      - content <- Found a word, start over with rest 
      - m
      - ma
      - ...
      - marketing <- Found a word, no more string so exit
      
    2. 如果您可以有垃圾,那么您将需要执行与选项 1 相同的操作。另外还有一个步骤。每当您到达字符串的末尾而没有找到单词时,请返回开头 + 1。使用 #abfgtest 示例,首先您将在“abfgtest”上运行上述函数,然后是“bfgtest”,然后是“fgtest”等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多