【问题标题】:Concatenating string with number in ruby将字符串与红宝石中的数字连接起来
【发布时间】:2009-12-21 13:29:36
【问题描述】:

我是 ruby​​ 的初学者,所以这是一个非常新手的问题。

我正在尝试连接一个带有浮点值的字符串,如下所示,然后打印它。

puts " Total Revenue of East Cost: " + total_revenue_of_east_cost 

total_revenue_of_east_cost 是一个持有浮点值的变量,我怎样才能让它打印出来?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    这并不完全是串联,但它会做你想做的工作:

    puts " Total Revenue of East Cost: #{total_revenue_of_east_cost}"
    

    从技术上讲,这是插值。不同之处在于连接添加到字符串的末尾,其中插值计算一些代码并将其插入到字符串中。在这种情况下,插入位于字符串的末尾。

    Ruby 将评估字符串中大括号之间的任何内容,其中左大括号前面是一个八字形。

    【讨论】:

    • 谢谢,我能知道这里的连接规则吗?
    • octothorpe 是美国代言哈希 ;)
    【解决方案2】:

    Stephen Doyle 的回答是,使用一种称为“字符串插值”的技术是正确的,并且可能是最简单的解决方案,但是还有另一种方法。通过调用 objects 的 to_s 方法,可以将 object 转换为 string 以进行打印。所以下面的也行。

    puts " Total Revenue of East Cost: " + total_revenue_of_east_cost.to_s
    

    【讨论】:

    • BTW:如果插值表达式的结果不是String,字符串插值会自动调用to_s
    【解决方案3】:

    对于您的示例,您可能需要比 to_s 方法更具体的东西。毕竟,浮点数上的 to_s 通常会包含比您希望显示的更多或更少的精度。

    在这种情况下,

    puts " Total Revenue of East Coast: #{sprintf('%.02f', total_revenue_of_east_coast)}"
    

    可能会更好。 #{} 可以处理任何 ruby​​ 代码,因此您可以使用 sprintf 或任何其他您喜欢的格式化方法。

    【讨论】:

      【解决方案4】:

      我喜欢(详见 Class String %):

      puts " Total Revenue of East Coast: " + "%.2f" % total_revenue_of_east_coast
      

      【讨论】:

      • 使用Hash时如何格式化:"%002d" % 23 --> 023. "%{k}" % {k: 23} --> 23. 如何获取"023" ?.
      • So "%002d" % 23 --> 23 not 023. If found "%03d" % 23 --> 023. 现在要使用哈希而不是固定数字中的数据,请执行不改变格式字符串。只需执行类似 "%03d" % {k: 23}[:k] --> 023
      • 我仍然会失去使用哈希而不是列表的优势。即“您好 {name},我很高兴您的 {stuff} 是...所以,{name}:您的 {stuff} bla bla bla 是什么?... {stuff} ... {name}”% { :name => "耶稣", :stuff => "宠物"}。想象一下,对于一个列表,您必须多次重复“name”和“stuff”。而现在,我想要这个优势加上能够格式化。怎么样?
      • h = {:name => 'bob', :stuff => 23} sprintf("name = %s, value = %03d", h[:name], h[:stuff] )
      • 还是同样的问题。这样,您必须按照它们在模板中出现的顺序一一列出这些值。如何从模板中按名称引用值并同时应用一些格式(即数字格式 %02d)。
      【解决方案5】:

      示例扣子

      (1..100).each do |i| puts "indice #{i} " end
      

      【讨论】:

      • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
      猜你喜欢
      • 1970-01-01
      • 2023-01-08
      • 2010-11-29
      • 1970-01-01
      • 2014-02-11
      • 2011-01-21
      • 2010-09-25
      • 1970-01-01
      相关资源
      最近更新 更多