ruby - 来自文件\模式的字符串插值

时间:2013-07-31 06:06:46

标签: ruby

我正在使用ruby 1.9.3,我正在尝试按如下方式实现字符串插值:

  • 声明并指定一个带字符串值的变量。
  • 读取具有字符串插值" pattern"。
  • 的文件
  • 进行字符串插值。

例如:

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

2 个答案:

答案 0 :(得分:1)

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

params.txt

<%= str %>

test.rb应该是这样的:

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

ERB docs here

答案 1 :(得分:1)

str = "my string"
content = File.read("params.txt")
eval(content) # => "my string"

<小时/> 用于此目的的优选方式是:

params.txt

%{str}

test.rb

content = File.read("params.txt")
content % {str: "my string"}
# => "my string"