如何在Ruby中进行位置替换?

时间:2011-11-11 16:42:11

标签: ruby string

我过去看过使用过吗?这样做的角色。但是我无法在互联网上找到一个例子,很可能是因为我不知道这种做法实际上是什么。

"? ? ?" % ['A','B','C']

的产率:

"A B C"

是我想要做的。

4 个答案:

答案 0 :(得分:3)

您需要使用格式说明符,而不仅仅是问号。

"%s %s %s" % ['A', 'B', 'C']

http://www.ruby-doc.org/core-1.9.3/String.html

答案 1 :(得分:3)

你的问题不太清楚。如果你只想做printf - 就像变量替换一样,你就可以像Dave那样向你展示:

> "%s %s %s" % ['A', 'B', 'C']
=> "A B C"

如果你想搞乱这些职位,你可以做以下事情:

>> "%3$s %1$s %2$s " % ['A', 'B', 'C']
=> "C A B "

或:

>> "%1$s %1$s %2$s %3$s" % ['A', 'B', 'C']
=> "A A B C"

您最常记得的?的使用是在ActiveRecord查询的上下文中。这是Rails特定的,但在纯Ruby中不起作用。

答案 2 :(得分:1)

它被称为字符串插值。你可以这样做:

"%s %s %s" % %w{A B C}

有关详细信息,请参阅this好文章。

答案 3 :(得分:0)

在Ruby中从'A B C'获取['A', 'B', 'C']的最佳方法可能是['A', 'B', 'C'].join ' '。但是,在一般情况下,String#%会像其他人所描述的那样进行替换(使用'%s' - 样式格式字符串)。检查该方法的文档和Kernel.sprintf