我的params哈希包含字符串值,如:
маслёнка | масло
我的方法目前有这段代码:
s = %Q{(@content "#{params[:structure]}")}
引用整个字符串:
(@content "маслёнка | масло")
但我需要单独引用每个元素:
(@content "маслёнка" | "масло")
我知道我需要通过|
符号将我的params字符串拆分为子字符串,但元素需要单独引用并用竖线字符分隔。我怎么能在这里做到这一点?
答案 0 :(得分:1)
input.split(" | ").map {|s| "\"" + s + "\""}.compact.join(" | ")
会得到你想要的东西。
答案 1 :(得分:1)
您的问题是由引用要求的复杂性引起的。解决此问题的一种方法是使用Kernel#sprintf和Ruby的备用双引号文字(%Q
)来构建字符串。例如:
s = sprintf '(@content %s)',
params[:structure].split( /\s+\|\s+/ ).
map { |elem| %Q["#{elem}"] }.
join(" | ")
# => "(@content \"маслёнка\" | \"масло\")"
您可以使用Kernel#puts验证字符串是否已正确转义,在这种情况下会产生:
(@ content“маслёнка”|“масло”)
答案 2 :(得分:0)
这会将params
哈希拆分为由|
分隔的字符串,但不会保留实际的|
字符。
s = %Q{(@content "#{params[:structure].split('|')}")}