【发布时间】:2014-02-20 19:44:38
【问题描述】:
我正在寻找一种更有效的方法来从以特定字符串开头的文本块中选择单词。如果可能的话,我还想同时修改它们。就我而言,我正在寻找主题标签并将它们小写,所以给定一个字符串:
the quick brown #Fox jumps over the lazy #dog
我想生成数组:
["#fox","#dog"]
甚至:
["fox","dog"]
目前我的(可能是低效的)代码如下所示:
words = item.body.split(" ")
tagged_words = words.select{|x| x[0,1] == "#"}
tagged_words = tagged_words.map{ |x| x.downcase }
我假设前两行可以用正则表达式替换,但无法弄清楚。也许甚至有一种方法可以组合所有三行代码?
这部分可能与大众不太相关,但我最终想要做的是获取完整的标签列表并将其减少为仅在项目正文中未引用的标签。这需要多行代码,因此非常感谢任何可以重写整个过程以提高效率的人。
external_tags = item.tags.select{|tag| !tagged_words.include?("#"+tag.name)}
我搜索了一段时间以寻找问题第一部分的答案,但找不到。任何引用我的更一般问题的答案的回复/评论当然就足够了。
【问题讨论】: