如何解决排列宝石
| 我正在尝试获取一个字符串列表,这些字符串是字母,数字和破折号的组合,长度从1到63不等。 我正在使用置换宝石,并尝试使用join(\'\')
获取字符串。
length = 1
alphabet = [(\'a\'..\'z\').to_a,(\'0\'..\'9\').to_a,(\'-\').to_a].flatten
while length < 64
puts (alphabet.permutation(length){|x| p x}).join(\'\')
length += 1
end
我得到的输出如下:
[\"r\",\"q\",\"l\"]
[\"r\",\"m\"]
我确定我在这里缺少一些基本的东西。
任何帮助,不胜感激。
解决方法
不知道您要完成什么。下面的代码(一个简化的示例)呢?
[\'a\',\'b\',\'c\'].permutation(3).collect { |x| x.join(\'\')}
回来了
=> [\"abc\",\"acb\",\"bac\",\"bca\",\"cab\",\"cba\"]
, 因此,让我们使用这种机制进行SQL查询:
假设我想在数据库中找到一个人。人有名字和姓氏,而不只是\'Name \'。更复杂的是,名字和姓氏可能包含许多单词。
...因此我们有来自搜索引擎的查询字符串,其中包含\“ Jo Svenda Schmidt \”,其中\“ Jo Svenda \”是名字。
query = \"Jo Svenda Schmidt\".split
=> [\"Jo\",\"Svenda\",\"Schmidt\"]
query.permutation(query.length).collect { |x| x.join(\" AND \") }.join(\" OR \")
=> \"Jo AND Svenda AND Schmidt OR Jo AND Schmidt AND Svenda OR Svenda AND Jo AND Schmidt OR Svenda AND Schmidt AND Jo OR Schmidt AND Jo AND Svenda OR Schmidt AND Svenda AND Jo\"
这几乎是我们想要的,但不是全部。我们需要添加列名称并将其分组。
分组可能很简单
... join(\“)或(\”)
在和,然后在结果查询的开头添加\“(\”,在结尾添加\“)\”。
但是如何在此查询中很好地添加\'Firstname = \'和\'Lastname = \'或\'LIKE \'?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。