Il n'est pas nécessaire d'utiliser à la fois le strip et le chomp, car le strip supprimera également les retours chariot de fin de ligne - à moins que vous n'ayez modifié le séparateur d'enregistrement par défaut et que ce soit ce que vous chompiez.
La réponse d'Olly présente déjà la manière canonique de faire cela en Ruby, mais si vous vous retrouvez à faire cela souvent, vous pouvez toujours définir une méthode pour cela :
def strip_or_self!(str)
str.strip! || str
end
Donner :
@title = strip_or_self!(tokens[Title]) if tokens[Title]
Gardez également à l'esprit que l'instruction if empêchera @title
d'être assigné si le jeton est nul, ce qui aura pour effet de lui faire conserver sa valeur précédente. Si vous voulez ou ne voulez pas @title
étant toujours affecté, vous pouvez déplacer le contrôle 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 la chaîne elle-même :
class String
def strip_or_self!
strip! || self
end
end
Donner un de :
@title = tokens[Title].strip_or_self! if tokens[Title]
@title = tokens[Title] && tokens[Title].strip_or_self!