2016-04-15 100 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 +'」]'