我有一个包含大量任意空格的日志文件:
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
但是,这仅在字符串完全匹配时才有效。
答案 0 :(得分:1)
您可以使用Ruby的gsub方法将一个或多个空白字符(包括换行符)的所有实例转换为单个空格:
def string_in_log?(str)
File.read(@log_full_path).gsub(/\s+/, " ").include?(str)
end
gsub
使用正则表达式/\s+/
将所有空格组替换为一个空格。
此外,ruby变量(常量除外)和方法名称应以小写字母开头并使用snake_case,而不是camelCase。
答案 1 :(得分:0)
也许打破并重新加入日志?
log = <<-EOF
Number of active files:
20
Missing files:
10
EOF
pattern = 'Number of active files: 20'
puts log.split.join(' ').include?(pattern) # true