2014-08-07 6 views
0

Я хочу проверить шаблон в файле, и если шаблон не найден, напечатайте предупреждение или что-то еще. Файл имеет около 100 строк.Проверка шаблона в файле

Вот код, который я пробовал.

file = file.open("file_tobe_checked", "r") 
while (line=file.get) 
    if (line =~ /Copyright \W+ \d\d\d\d/).nil? # the pattern I want to check 
    puts "Copyright is missing or written in a wrong format" 
    end 
end 
file.close 

Этот код проверяет шаблон авторского права и печатает "Copyright is missing.." для каждой строки. Есть идеи?

ответ

0

Используйте file.read для хранения файла в одной строке.

file = File.open("file_tobe_checked", "r") 
contents = file.read 

if (contents =~ /Copyright \W+ \d\d\d\d/).nil? # the pattern I want to check 
    puts "Copyright is missing or written in a wrong format" 
end 

file.close 

См. IO.read для получения дополнительной информации. http://www.ruby-doc.org/core-2.0/IO.html#method-c-read

Предупреждение: Это хорошо работает, если вы знаете, что у вас есть довольно маленький файл, и вы знаете, что авторское право будет близко к концу.

+0

Если вы намерены чавкать файл, 'содержание = File.read ("имя_файла")' может быть проще. Кроме того, вы можете использовать 'if contents = ~ ...' без '.nil'. –

+0

Я хотел использовать File.open, потому что я буду проверять пробелы по строкам сразу после проверки авторских прав в цикле while. У вас есть еще предложения? – Ariam

+0

Вы можете использовать File.open, без проблем. Затем просто вызовите файл file.read, чтобы вставить в файл строку. (в отличие от file.get) –

0

Вы близки:

found_copyright = false 

file = file.open("file_tobe_checked", "r") #opened the file I wanted to check 
while (line=file.get && !found_copyright) 
    found_copyright = found_copyright || (line =~ /Copyright \W+ \d\d\d\d/) 
end 
file.close 

unless found_copyright 
    puts "Copyright is missing or written in a wrong format" 
end 
Смежные вопросы