Il n'est pas nécessaire de supprimer et de découper à la fois, car la suppression supprimera également les retours chariot de fin - à moins que vous n'ayez changé le séparateur d'enregistrement par défaut et que c'est ce que vous grignotez.
La réponse d'Olly a déjà la manière canonique de le faire dans Ruby, bien que si vous vous surprenez à faire beaucoup cela, vous pouvez toujours définir une méthode pour cela:
def strip_or_self!(str)
str.strip! || str
end
Donnant:
@title = strip_or_self!(tokens[Title]) if tokens[Title]
Gardez également à l'esprit que l'instruction if empêchera @titled'être affectée si le jeton est nul, ce qui lui permettra de conserver sa valeur précédente. Si vous voulez ou ne voyez pas d'inconvénient à @titleêtre toujours affecté, vous pouvez déplacer le chèque dans la méthode et réduire davantage la duplication:
def strip_or_self!(str)
str.strip! || str if str
end
Comme alternative, si vous vous sentez aventureux, vous pouvez définir une méthode sur String lui-même:
class String
def strip_or_self!
strip! || self
end
end
Donner l'un des:
@title = tokens[Title].strip_or_self! if tokens[Title]
@title = tokens[Title] && tokens[Title].strip_or_self!