如何使用.gsubs在ruby中用哈希替换字符串?

时间:2019-05-02 12:50:36

标签: ruby

我刚刚开始学习Ruby,我需要创建一个模板,用我编写的哈希值替换字符串。我需要在代码中添加什么?

这是我的代码,我为任务编写了两种方法,请帮忙提出您的建议

class Template 

  def initialize(template_string, local_variables)
    @template_string = template_string
    @local_variables = local_variables
  end 

  def compile()
    @template_string.gsub()
  end
end



puts Template.new("I like %{x}", x:"coffee").compile # x = coffee
puts Template.new("x = %{x}", y:5).compile # unknown x
puts Template.new("x = %{x}", x:5, y:3).compile # x = 5, ignores y

2 个答案:

答案 0 :(得分:1)

请首先阅读如何使用String#gsub方法。然后像这样重写Template#compile

 def compile
  compiled = @template_string.dup

  @local_variables.each do |k, v|
    compiled.gsub!("%{#{k}}", String(v))
  end

  compiled
end

答案 1 :(得分:1)

无需使用gsub。只需使用String#%格式规范即可。

def compile
  @template_string % @local_variables
end

整个示例:

class Template
  def initialize(template_string, local_variables)
    @template_string = template_string
    @local_variables = local_variables
  end 

  def compile
    @template_string % @local_variables
  end
end

Template.new("I like %{x}", x: "coffee").compile
#=> "I like coffee"

Template.new("x = %{x}", y: 5).compile
#=> KeyError (key{x} not found)

Template.new("x = %{x}", x: 5, y: 3).compile
#=> "x = 5"