-2

我正在使用 ruby​​ 1.9.3,我正在尝试实现字符串插值,如下所示:

  • 声明并分配一个带有字符串值的变量。
  • 读取具有字符串插值“模式”的文件。
  • 做字符串插值。

例如:

params.txt

"#{str}"

test.rb

str = "my string"
content = File.open("params.txt", "r").read()
puts("#{content}") #result in "#{str}" and not "my string", it returns the content of the file as is

我怎样才能实现字符串插值?

更新 我想要实现的另一个例子:

str = "my string"
pat = '#{str}'
puts(pat)      # returns nil
puts("#{pat}") # returns nil
eval(pat)      # returns nil
eval("#{pat}") # returns nil
4

2 回答 2

1

如果您改用 ERB,这将更容易。

params.txt

<%= str %>

test.rb应该是这样的:

str = "my string"
ERB.new("params.txt").result(binding)

ERB 文档在这里

于 2013-07-31T06:10:47.790 回答
1
str = "my string"
content = File.read("params.txt")
eval(content) # => "my string"


用于此目的的优选方式是:

参数.txt

%{str}

测试.rb

content = File.read("params.txt")
content % {str: "my string"}
# => "my string"
于 2013-07-31T06:12:32.823 回答