2011-12-28 113 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],我將如何避免空白和孤兒詞的問題? (例如,「Mark在位置」,「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 2011-12-28 16:11:35

+0

而這正是我一直在想的。 做一些類似'parts <<「和」if!location.blank?「的工作將會很好。 – Mark 2011-12-28 20:19:20

相關問題