【问题标题】:How to conditionally format strings in Ruby?如何在 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”)

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

【问题讨论】:

    标签: ruby string text printf text-formatting


    【解决方案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? 这样的操作会很好。
    猜你喜欢
    • 1970-01-01
    • 2016-03-01
    • 2017-06-24
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 2015-03-15
    • 2013-03-17
    • 1970-01-01
    相关资源
    最近更新 更多