/ / Cordes assorties avec variations d'espaces - rubis

Cordes assorties avec variations dans les espaces - rubis

J'ai un fichier journal avec beaucoup d'espaces arbitraires:

Number of active files:
20

Missing files:

10

J'essaie de déterminer si une certaine chaîne comme celle-ci:

Expected_string = "Number of active files: 20"

est contenu dans le fichier journal. Existe-t-il un moyen facile de comparer les chaînes sans tenir compte de la variation dans les espaces?

J'utilise une méthode qui ressemble à ceci:

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

Cependant, cela ne fonctionne que si les chaînes correspondent exactement.

Réponses:

1 pour la réponse № 1

Vous pouvez utiliser Ruby "s gsub pour transformer toutes les instances d'un ou plusieurs caractères d'espacement (y compris les sauts de ligne) en un seul espace:

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

gsub utilise l'expression régulière /s+/ pour remplacer tous les groupes d'espaces par un seul espace.

De plus, les variables ruby ​​(sauf les constantes) et les noms de méthode doivent commencer par une lettre minuscule et utiliser snake_case, pas camelCase.


0 pour la réponse № 2

Peut-être casser et rejoindre le journal?

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

Missing files:

10
EOF

pattern = "Number of active files: 20"

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