我的字符串是这样的,"SHN::test::cg1","RDC::TEST::CONFIG 1"
但是当将其存储在变量中时
new_string="SHN::test::cg1","RDC::TEST::CONFIG 1","MDC::test::cg1"
我像这样的“#{new_string}”进行插值。值就像
""SHN::test::cg1","RDC::TEST::CONFIG 1""
更新1:这是我需要使用该场景的情况
$redis.subscribe("RDC::TEST::CONFIG 1","SHN::test::cg1") do |on|
#hardcoded values inside braces
end
但是我需要传递一个变量来形成上面尝试过的字符串(在大括号内)
$redis.subscribe("#{new_string}") do |on|
#interpolated value inside braces
end
更新2:答案我只需要传递new_string作为数组本身,不需要转换为字符串,这就是我的情况的答案
$redis.subscribe(new_string) do |on|
#interpolated value inside braces
end
提前致谢....
您new_string
实际上是一个数组,而不是字符串!原因是因为您实际上有三个用逗号分隔的字符串,所以Ruby将其解析为字符串数组:
irb> new_string="SHN::test::cg1","RDC::TEST::CONFIG 1","MDC::test::cg1"
=> ["SHN::test::cg1", "RDC::TEST::CONFIG 1", "MDC::test::cg1"]
然后将其插值到新字符串中时,Ruby会调用.to_s
Array,该数组(取决于Ruby的版本)会产生您所看到的内容:
irb> ["SHN::test::cg1","RDC::TEST::CONFIG 1","MDC::test::cg1"].to_s
=> "[\"SHN::test::cg1\", \"RDC::TEST::CONFIG 1\", \"MDC::test::cg1\"]"
irb> puts ["SHN::test::cg1","RDC::TEST::CONFIG 1","MDC::test::cg1"].to_s
["SHN::test::cg1", "RDC::TEST::CONFIG 1", "MDC::test::cg1"]
要解决此问题,只需制作new_string
一个实际的字符串(通过在定义中修正语法)。或者,您自己将数组转换为字符串,例如:
irb> "#{new_string.join('')}"
=> "SHN::test::cg1RDC::TEST::CONFIG 1MDC::test::cg1"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句