匹配空格中变体的字符串

时间:2016-02-25 03:45:07

标签: ruby

我有一个包含大量任意空格的日志文件:

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 

但是,这仅在字符串完全匹配时才有效。

2 个答案:

答案 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