ruby-on-rails - 使用带有 %s 和 % 以及多个字符串替换参数的 print 而不是 sprintf

标签 ruby-on-rails ruby string syntax printing

在以下 ruby​​ 代码中,输出变为:“x y”

x = "x %s"
y = "y"
z = "z"
print x % y %z

%z 被忽略。

我希望输出为“x y z”。

要了解 Ruby 语法的可能性和局限性,我只想使用 print 命令以及 %s 和 % 标志。我知道如何使用 sprintf 执行此操作,但我想知道是否有一种方法可以仅使用“打印”命令来执行此操作。

所以我尝试在变量“x”的定义中添加第二个 %s:

x = "x %s %s"
y = "y"
z = "z"
print x % y %z

但是我得到了这个错误:

in `%': too few arguments (ArgumentError)

使用 sprintf 你可以这样做:

x = "x %s %s"
y = "y"
z = "z"
print (sprintf(x, y, z))

输出就是我想要的:

x y z

但这太容易了。

有没有办法只使用“print”(不是 sprintf)而不使用 #{} 或将 y 和 z 组合成一个数组 [y,z]?

最佳答案

我其实不明白你想做什么,但是:

irb(main):001:0> x = "x %s"
=> "x %s"
irb(main):002:0> y = "y %s"
=> "y %s"
irb(main):003:0> z = "z"
=> "z"
irb(main):004:0> print x % y % z
x y z=> nil

和:

irb(main):006:0> x = "x %s %s"
=> "x %s %s"
irb(main):007:0> y = "y"
=> "y"
irb(main):008:0> z = "z"
=> "z"
irb(main):009:0> x % [y,z]
=> "x y z"

关于ruby-on-rails - 使用带有 %s 和 % 以及多个字符串替换参数的 print 而不是 sprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/542787/

相关文章:

mysql - 从另一个表模型 rails 更新另一个表的列

ruby-on-rails - Rails 3. 如何为人建模?

ruby-on-rails - I18n.l 显示错误的月份(一个月后)

python - 如何在 Python 中使用正则表达式将字符串中的字符替换为 '#' s

读取整数后 C 无法读取字符串

ruby-on-rails - 使用 Rails 将日期字符串转换并保存到数据库时使用的格式

ruby-on-rails - 无法使用 capistrano 部署 rails4 项目。 rbenv : version `2.0.0' is not installed

ruby - mongoid:返回所有嵌入文档

ruby - 如何在不按回车的情况下获取单个字符?

javascript - 如何转义存储颜色名称的 Less 变量中的引号?