我有以下搜索词:
"login:17639 email:fakemail@gmail.com ref:co-10000 common_name:testingdomain organization:'Internet Company'"
该术语源自 params 变量,其中左侧的:所有内容都是过滤器术语,右侧的所有内容都是过滤器:的值。我想要做的是将术语拆分为键和值,并从它们创建一个散列。这是最终目标:
search_filters = {
login:17639,
email:'fakemail@gmail.com',
etc, etc,
}
Run Code Online (Sandbox Code Playgroud)
我正在split, gsub, tr尝试获得这些值,但我在组织领域遇到了问题。这是我到目前为止所拥有的:
term.gsub(/'/,'').tr(':', ' ').split(" ")
term.gsub(":")
Run Code Online (Sandbox Code Playgroud)
基本上,还有许多其他变体,如上述。问题是组织领域。每次迭代都会产生这样["organization", "Internet", "Company"]的结果,问题是“互联网公司”正在分裂。我不能为这个过滤器放置一个简单的 if/else 语句来将它们粘合在一起,因为有更多的过滤器需要处理。有没有办法可以更容易地根据冒号来划分过滤项?谢谢你。
以下是有关如何开始的示例:
def splart(input)
input.scan(/([^:]+):('[^']*'|"[^"]*"|\S+)/).to_h
end
Run Code Online (Sandbox Code Playgroud)
这将梳理出您需要的数据。之后你可能需要清理它。