Ruby与Python的等价物是什么;s`s=";您好,%s。%s在哪里?“%(“约翰”、“玛丽”)`

Ruby与Python的等价物是什么;s`s=";您好,%s。%s在哪里?“%(“约翰”、“玛丽”)`,python,ruby,string-formatting,Python,Ruby,String Formatting,在Python中,这种字符串格式的习惯用法非常常见 s = "hello, %s. Where is %s?" % ("John","Mary") Ruby中的等价物是什么?几乎相同的方式: "hello, %s. Where is %s?" % ["John","Mary"] # => "hello, John. Where is Mary?" 其实差不多 s = "hello, %s. Where is

在Python中,这种字符串格式的习惯用法非常常见

s = "hello, %s. Where is %s?" % ("John","Mary")
Ruby中的等价物是什么?

几乎相同的方式:

"hello, %s. Where is %s?" % ["John","Mary"]
# => "hello, John. Where is Mary?"

其实差不多

s = "hello, %s. Where is %s?" % ["John","Mary"]
最简单的方法是。您可以将少量Ruby代码直接注入字符串中

name1 = "John"
name2 = "Mary"
"hello, #{name1}.  Where is #{name2}?"
您还可以在Ruby中格式化字符串

"hello, %s.  Where is %s?" % ["John", "Mary"]

记住在那里使用方括号。Ruby没有元组,只有数组,它们使用方括号。

在Ruby>1.9中,可以这样做:

s =  'hello, %{name1}. Where is %{name2}?' % { name1: 'John', name2: 'Mary' }

没有字符串连接,只有字符串格式。谷歌将以前所未有的速度回答这个问题。。。我花了大约20秒的时间才发现你可以在Ruby中做完全相同的事情。你不是要求连接,而是要求格式化/替换。你应该改变你的问题。顺便问一下,在ruby中,连接是用+执行的,还是在ruby中,方括号表示元组?我以为方括号是列表…@TIMEX:这个问题会有帮助:Ruby没有元组(至少没有伪造成语言)。是的,它是一个数组(“list”在Python中应该被称为数组…)。我肯定会使用第一个数组,它看起来更可读。第一个数组不起作用,{}查找一个变量,所以在本例中,它将打印John变量,而不是字符串“John”。第二个看起来是正确的。您还应该注意始终使用双引号,因为
“{name1}”
“{name1}”
不同。字符串插值在单引号中不起作用,必须使用双引号。例如:
“{abc”}”{abc\“}”
,但您需要的是
“{abc”}”\=>“abc”
第一种方法不是等效方法-模板不能作为值传递。我在那里编辑了Idomatic Ruby等效方法-但现在我注意到接受的答案已经这样做了-再次删除了“编辑”:使用字符串%运算符的哈希时,如果格式字符串中引用的键符号不存在,你会得到一个键错误。