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