/ / Відповідність рядків з варіаціями в пробілах - рубін

Відповідні рядки з варіаціями в пробілах - рубінові

У мене є файл журналу з великою кількістю довільних пробілів:

Number of active files:
20

Missing files:

10

Я намагаюся визначити, чи певний рядок подібний до цього:

Expected_string = "Number of active files: 20"

міститься у файлі журналу. Чи є простий спосіб порівняти рядки, не враховуючи зміни в пробілах?

Я використовую метод, який виглядає так:

def isStringInLog?(string)
if open(@log_full_path).grep(/#{string}/).size > 0
return true
end
return false
end

Однак це працює, лише якщо рядки точно збігаються.

Відповіді:

1 для відповіді № 1

Ви можете використовувати Ruby "s gsub спосіб перетворити всі екземпляри одного або декількох пробілів (включаючи нові рядки) в єдиний пробіл:

def string_in_log?(str)
File.read(@log_full_path).gsub(/s+/, " ").include?(str)
end

gsub використовує регулярний вираз /s+/ замінити всі групи пробілів одним пробілом.

Крім того, рубінові змінні (крім констант) та назви методів повинні починатися з малої літери та використовувати snake_case, не camelCase.


0 для відповіді № 2

Може зламати журнал і знову приєднатися до нього?

log = <<-EOF
Number of active files:
20

Missing files:

10
EOF

pattern = "Number of active files: 20"

puts log.split.join(" ").include?(pattern) # true