匹配具有空格变体的字符串

  • 本文关键字:字符串 空格 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 

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

您可以使用 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

最新更新