簡體   English   中英

Ruby 雙引號字符串解析

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM