我希望我能清楚地表达清楚,如果没有,请原谅我。
现在我有一个基本上有文件路径的字符串数组,如下所述:
2.1.7 :002 > a
=> ["stuff/things/oranges", "stuff/things/bananas", "stuff/others/upside", "stuff/others/down", "stuff/what/who", "how/what/when", "how/what/time", "a/b/c", "a/d/c"]
我希望完成的内容与使用此信息的制表符完成功能相似。
让我们说我已经输入了stuff/
并点击了标签。我希望能够将值things
,others
和what
拉出并将它们放入自己的数组中,因为它们是下一个唯一可能的值。然后,如果我有stuff/things
,那么我希望值oranges
和bananas
成为可能。因此,如果我们可以使其高效且递归,那将是理想的。
应该知道链中的下一个值(things
,others
,what
)是未知的,因此需要编程才能找到它们。
我遇到的问题是这个原始的a
数组将有数百个(如果不是几千个)条目。因此效率绝对是这里的关键参与者。
感谢您关注此事,我希望这是有道理的。感谢所有帮助!
答案 0 :(得分:0)
我认为grep可能有用。
a = ["stuff/things/oranges", "stuff/things/bananas", "stuff/others/upside", "stuff/others/down", "stuff/what/who", "how/what/when", "how/what/time", "a/b/c", "a/d/c"]
a.grep /\Astuff/
=> ["stuff/things/oranges", "stuff/things/bananas", "stuff/others/upside", "stuff/others/down", "stuff/what/who"]
a.grep /\Astuff\/things/
=> ["stuff/things/oranges", "stuff/things/bananas"]
答案 1 :(得分:0)
你总是可以使用Readline,这就是Bash和其他shell实现自动完成的方式:
https://ruby-doc.org/stdlib-2.4.0/libdoc/readline/rdoc/Readline.html
本教程深入介绍了它: