如果line包含word,则将line放入变量

时间:2017-04-26 00:55:50

标签: ruby

我花了几个小时用谷歌搜索,但找不到确切的答案。

我想搜索多行文本文件,如果某行包含'dog',请将该行放入变量。

这是我的代码:

if File.foreach('textfile.txt').grep(/dog/)

我希望下一行代码将包含'dog'的行放入变量wordline

我也可以搜索几个术语而不是一个术语,即:

if File.foreach('textfile.txt').grep(/cat|dog/)

我意识到它也可能以不同的方式完成,例如:

wordline=File.foreach('textile.txt').grep(/dog/)

但我不知道该内联版本的语法。

编辑:这是我的第一篇文章,我是一篇全新的Ruby newb ..我在帖子中提到过。但是有人编辑了所有内容,并且对我的帖子进行了投票。我在发布之前就已经阅读了常见问题解答,因此下次会欢迎对审查行为的解释。

1 个答案:

答案 0 :(得分:0)

这里的一般想法是:

matching = File.readlines('text.txt').grep(/dog|cat/)

或更一般地说:

terms = %w[ dog cat ]

matching = File.readlines('text.txt').grep(Regexp.union(terms))

由于matching是一个数组,您可以引用其中的元素,如matching[0]matching.first,或者在必要时使用.each进行迭代。将第一个匹配分配给变量:

first_match = matching.first