我从CSV文件中提取以下字符串,从单元格A1中提取,并将其存储为变量:
#{collector_id}
因此,单元格A1读取#{collector_id}
,我的代码基本上是这样做的:
test = #excel_cell_A1
但是,如果我这样做:
puts test
我明白了:
#{collector_id}
我需要#{collector_id}
作为实际变量collector_id
读取,而不是我用来调用变量的代码。这可能吗?
感谢您的帮助。我使用的是ruby 1.9.3。
答案 0 :(得分:1)
您可以使用sub
或gsub
替换预期的输入值:
collector_id = "foo"
test = '#{collector_id}'
test.sub("\#{collector_id}", "#{collector_id}") #=> "foo"
我会避免使用eval
(或至少完整性检查您正在运行的内容),以降低运行从CSV文件中收到的任意代码的风险。
答案 1 :(得分:0)
试试这个:
test_to_s = eval("\"#{ test }\"")
puts test_to_s
%q["#{ test }"]
将构建字符串"#{collector_id}"
(双引号是字符串的一部分,"#{collector_id}".length == 17
),然后将eval