2016-04-15 137 views
1

我试图创建使用字符串:红宝石串结构

puts '["#{follower.screen_name}"]' 

我所要的输出是

["DailySanJose"] 

其中DailySanJosefollower.screen_name值。然而,目前的输出是

["#{follower.screen_name}"] 

任何帮助极大的赞赏。

+0

问题不清楚。 'puts'不会创建(返回)一个字符串。你想创建或输出一个字符串? – sawa

回答

4

插值(#{})仅适用于双引号字符串。通过

puts "[\"#{follower.screen_name}\"]" 

我包括字符串中的双引号转义他们与\(反斜杠)字符:

试试这个。

-1

编辑

,你可以用双引号

puts %{["#{follower.screen_name}"]} 
+1

根据OP,这将工作,但它不会生成所需的输出,其中必须包含双引号。 – Linuxios

+0

@Linuxios,你在说,“这会行得通但不起作用。” :-)罢工“将工作,但它”? –

+0

@CarySwoveland:好点......现在编辑太迟:/。 – Linuxios

3

你可以使用%Q不担心转义引号做这种方式

%Q(["#{follower.screen_name}"]) 

这将为您免去引号au并且进行字符串插值,这样你就不必自己担心了。

1

如果你试图制造类似JSON输出:

require 'json' 

test = "DailySanJose" 

JSON.dump([ test ]) 
# => "[\"DailySanJose\"]" 

这样做的优点是这占像The "Test"需要双引号的字符串。

puts JSON.dump([ test ]) 
# => ["DailySanJose"] 

还有其他一些简单的方法:

[ test ].inspect 
# => "[\"DailySanJose\"]" 
+0

这确实起作用。但值得一提的是,'inspect'的输出不被认为是可靠的,除了调试之外不应该用于其他任何东西。使用JSON要好得多。 – Linuxios

+0

@Linuxios'inspect'不可靠?这对于Ruby来说很重要,当使用普通字符串时,它的效果非常好。我同意,如果这是预期的目标,那么JSON会更好,因为输出更加标准化。 – tadman

+0

我不知道该方法的可靠性,但pp会打印出更好的更大数据结构的字符串表示形式。 –

0

为了完善选项不要被\"一部分,当您打印它出来完全一样,是被混淆,因为,你也可以使用一个heredoc

howdy = "hi" 
puts <<_ 
["#{howdy}"] 
_ 
    # ["hi"] 
0

您可以使用看跌期权 '[ “ '+ follower.screen_name +'”]'