提取Ruby数组中的常用单词列表

时间:2017-03-02 19:41:34

标签: arrays ruby processing-efficiency

我希望我能清楚地表达清楚,如果没有,请原谅我。

现在我有一个基本上有文件路径的字符串数组,如下所述:

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/并点击了标签。我希望能够将值thingsotherswhat拉出并将它们放入自己的数组中,因为它们是下一个唯一可能的值。然后,如果我有stuff/things,那么我希望值orangesbananas成为可能。因此,如果我们可以使其高效且递归,那将是理想的。

应该知道链中的下一个值(thingsotherswhat)是未知的,因此需要编程才能找到它们。

我遇到的问题是这个原始的a数组将有数百个(如果不是几千个)条目。因此效率绝对是这里的关键参与者。

感谢您关注此事,我希望这是有道理的。感谢所有帮助!

2 个答案:

答案 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

本教程深入介绍了它:

http://bogojoker.com/readline/