[英]Ruby String Parsing with Double Quotes
在我的 ruby on rails 項目中,我想創建一個包含字符串化數組的字符串。 例如:
irb(main):047:0> array = ["a", "b", "c"]
=> ["a", "b", "c"]
現在我想用數組創建一個字符串,以便用每個元素周圍的雙引號對數組進行字符串化。 例如:
"my array is '["a","b","c"]'"
我已經嘗試並得到:
irb(main):051:0> "my array is [#{array.map { |item| %Q["#{item}"] }.join(", ")}]"
=> "my array is [\"a\", \"b\", \"c\"]"
請注意,不需要\
,我想擺脫它們。 所以我試過了
irb(main):056:0> "my array is [#{array.map { |item| %Q["#{item}"] }.join(", ")}]".gsub('\\','')
=> "my array is [\"a\", \"b\", \"c\"]"
請注意, \
仍然存在。
我怎么得到它
"my array is '["a","b","c"]'"
或者這是不可能的? 謝謝!
由於您使用的是字符串插值,因此 ruby 必須轉義字符串中的雙引號。 否則,它將創建由所有這些引號分隔的不同字符串。
您可以使用此代碼獲得相同的結果:
"my array is #{array}"
=> "my array is [\"a\", \"b\", \"c\"]"
請注意,這些反斜杠只是內部的。
所以,基本上,你做對了,只是不需要整個映射的東西。
如果你想用雙引號顯示它們,你也可以這樣做:
>> my_array = ["a", "b", "c"]
=> ["a", "b", "c"]
>> puts('My array is \'["%s", "%s", "%s"]\'' % my_array)
My array is '["a", "b", "c"]'
=> nil # this is the return of `puts`
>> puts %q|"My array is '["%s", "%s", and "%s"]'"| % my_array
=> "My array is '["a", "b", and "c"]'"
所以你已經“得到它”你想要的,但是在代碼的上下文中顯示它,轉義需要發生,否則它會指示字符串的結尾,但在上面的例子中,我們正在使用 output,而不是比 object 在 Ruby 上下文中的表示。
我也沒有在字符串周圍加上雙引號作為 output,因為它可能不是預期的。 (除非它真的是一個引用。)
我知道你問過雙引號,但如果你的最終目標是創建一個字符串來演示你如何創建你的數組,你也可以考慮稍微不同地定義你的數組:
array = %w[a,b,c]
"my array is '%w#{array.to_s.gsub("\"", "")}'"
=>"my array is '%w[a,b,c]'"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.