Проверить, содержит ли файл строку

поэтому я нашел этот вопрос здесь, но у меня проблема с выходом и как справиться с ним с помощью оператора if. Это то, что у меня есть, но он всегда говорит, что это правда, даже если слово монитор не существует в файле

if File.readlines("testfile.txt").grep(/monitor/)
  do something
end

Должно ли это быть что-то вроде == "nil"? Я совершенно новичок в ruby и не уверен, что выходы будут.

1 ответов


перечисляемый#grep не возвращает логическое значение; он возвращает массив (как бы у вас был доступ к совпадениям без передачи блока в противном случае?).

если совпадений не найдено, он возвращает пустой массив и [] значение true. Вам нужно будет проверить размер массива в if утверждение, т. е.:

if File.readlines("testfile.txt").grep(/monitor/).size > 0
  # do something
end

документация должна быть вашим первым ресурсом для таких вопросов.