如何在Ruby中有条件地格式化字符串?

如何在Ruby中有条件地格式化字符串?,ruby,string,text,printf,text-formatting,Ruby,String,Text,Printf,Text Formatting,这是我一直想弄清楚的一段时间,但不能完全弄清楚 假设我有四个元素: name=“Mark” location=”“ time=time.now 文本-“foo” 如果我使用str#%进行格式化,比如:%s在%s附近的位置\%s\,并说%s“%[姓名、位置、时间、文本],我如何避免空格和孤立词的问题?(例如,“马克在2011-12-28T020500Z-0400前后的位置”,并表示“福”) 我还可以使用其他技术吗?只需逐段构建字符串并组装结果。如果您有访问权限,可以轻松清理以下内容。空白?(我

这是我一直想弄清楚的一段时间,但不能完全弄清楚

假设我有四个元素:

  • name=“Mark”
  • location=”“
  • time=time.now
  • 文本-“foo”
如果我使用
str#%
进行格式化,比如:
%s在%s附近的位置\%s\,并说%s“%[姓名、位置、时间、文本]
,我如何避免空格和孤立词的问题?(例如,“马克在2011-12-28T020500Z-0400前后的位置”,并表示“福”)


我还可以使用其他技术吗?

只需逐段构建字符串并组装结果。如果您有访问权限,可以轻松清理以下内容。空白?(我想是空白的?)

parts=[]

零件是的,它将是空白的。我确实安装了主动支持,所以我可以只输入
要求“主动支持/core\u ext/object/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(" ")