Нет необходимости в раздевании и разбивке, поскольку раздевание также удаляет завершающие возвраты каретки - если вы не изменили разделитель записей по умолчанию и это то, что вы разбиваете.
Ответ Олли уже имеет канонический способ сделать это в Ruby, хотя, если вы обнаружите, что делаете это много, вы всегда можете определить для него метод:
def strip_or_self!(str)
str.strip! || str
end
Предоставление:
@title = strip_or_self!(tokens[Title]) if tokens[Title]
Также следует помнить, что оператор if будет препятствовать назначению @title
, если токен равен nil, что приведет к тому, что он сохранит свое предыдущее значение. Если вы хотите или не возражаете против всегда назначаемого @title
, вы можете перенести проверку в метод и еще больше уменьшить дублирование:
def strip_or_self!(str)
str.strip! || str if str
end
В качестве альтернативы, если вы чувствуете себя авантюрным, вы можете определить метод для самой строки:
class String
def strip_or_self!
strip! || self
end
end
Предоставление одного из:
@title = tokens[Title].strip_or_self! if tokens[Title]
@title = tokens[Title] && tokens[Title].strip_or_self!