gpt4 book ai didi

ruby - 从以特定字符串开头的文本中提取(和修改)所有单词?

转载 作者:数据小太阳 更新时间:2023-10-29 08:47:54 25 4
gpt4 key购买 nike

我正在寻找一种更有效的方法来从以特定字符串开头的文本 block 中选择单词。如果可能的话,我也想同时修改它们。就我而言,我正在寻找主题标签并将其小写,因此给定一个字符串:

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)}

我搜索了一段时间以寻找问题第一部分的答案,但找不到。任何引用我的更一般问题的答案的回复/评论肯定就足够了。

最佳答案

s = "the quick brown #Fox jumps over the lazy #dog"
p s.scan(/(^|\s)#(\S+)/).map { |m| m[1].downcase }
# => ["fox", "dog"]

如果我错了,请纠正我,但是一旦这部分开始工作,您似乎已经回答了问题的第二部分。

关于ruby - 从以特定字符串开头的文本中提取(和修改)所有单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21917949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com