如何在 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 &lt;&lt; "and" if !location.blank? 这样的操作会很好。

以上是关于如何在 Ruby 中有条件地格式化字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中有条件地返回正则表达式匹配? [复制]

ruby klb.rb irb

你如何在 Ruby 中阅读这个三元条件?

如何在pySpark中有条件地替换值并将替换后的值用于下一个条件

Ruby学习-1.学习对象

如何有条件地设置 Dojo 数据网格中的单元格样式?