-1

我正在从单元格 A1 的 CSV 文件中提取以下字符串,并将其存储为变量:

#{collector_id}

所以,单元格 A1 读取#{collector_id},我的代码基本上是这样做的:

test = #excel_cell_A1

但是,如果我这样做:

puts test

我明白了:

#{collector_id}

我需要#{collector_id}读取实际变量collector_id,而不是我用来调用变量的代码。那可能吗?

谢谢您的帮助。我正在使用红宝石 1.9.3。

4

2 回答 2

1

您可以使用subgsub替换预期的输入值:

collector_id = "foo"
test = '#{collector_id}'
test.sub("\#{collector_id}", "#{collector_id}") #=> "foo"

我会避免使用eval(或至少检查您正在运行的内容)来降低运行从 CSV 文件收到的任意代码的风险。

于 2013-08-26T15:46:25.007 回答
0

试试这个:

test_to_s = eval("\"#{ test }\"")
puts test_to_s

%q["#{ test }"]将构建字符串"#{collector_id}"(双引号是字符串的一部分,"#{collector_id}".length == 17),然后将被评估为 ruby​​ 代码eval

于 2013-08-26T15:39:43.730 回答