2011-12-28 3 views
2

Это то, что я пытался выяснить некоторое время, но не могу понять.Как условно форматировать строки в Ruby?

Скажем, у меня есть эти четыре элемента:

  • name = "Mark"
  • location = ""
  • time = Time.now
  • text - "foo"

И если я использовал str#% для форматирования, например, так: "%s was at the location \"%s\" around %s and said %s" % [name,location,time.to_s,text], как бы я избежать проблемы пробелов и сиротских слов? (Например, «Марк был в месте» «около 2011-12-28T020500Z-0400 и сказал foo»)

Есть ли какие-либо другие методы, которые я мог бы использовать?

ответ

3

Просто постройте строку по частям и соберите результаты. Вы можете легко очистить следующее, если у вас есть доступ к .blank? (Я думаю, что это пусто?)

parts = [] 
parts << name if name && !name.empty? 
parts << "was" if name && !name.empty? && location && !location.empty? 
parts << %{at location "#{location}"} if location && !location.empty? 
parts << "around #{time}" 
parts << "and" if location && !location.empty? && text && !text.emtpy? 
parts << "said #{text}" if text && !text.empty? 
parts.join(" ") 
+0

Да, это было бы пусто. У меня установлена ​​Active Support, поэтому я могу просто ввести 'require 'active_support/core_ext/object/blank''. – Mark

+0

И это то, о чем я тоже думал. Выполнение чего-то типа 'parts <<" и "if! Location.blank?' Будет работать хорошо. – Mark

 Смежные вопросы

  • Нет связанных вопросов^_^