如何在 Ruby 中有条件地格式化字符串?
Posted
技术标签:
【中文标题】如何在 Ruby 中有条件地格式化字符串?【英文标题】:How to conditionally format strings in Ruby? 【发布时间】:2011-12-28 06:08:07 【问题描述】:这是我一直试图弄清楚但无法完全弄清楚的事情。
假设我有这四个元素:
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”)
还有其他我可以使用的技术吗?
【问题讨论】:
【参考方案1】:只需一点一点地构建字符串并组合结果。如果您有权访问 .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(" ")
【讨论】:
是的,它将是空白的。我确实安装了 Active Support,所以我可以输入require 'active_support/core_ext/object/blank'
。
这也是我一直在想的。像parts << "and" if !location.blank?
这样的操作会很好。以上是关于如何在 Ruby 中有条件地格式化字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何在javascript中有条件地返回正则表达式匹配? [复制]