Ruby将字符串插值应用于单引号字符串

时间:2015-11-19 11:56:19

标签: ruby string string-interpolation

我有一个包含一些插值语句的字符串,例如description='Hello! I am #{self.name}'。该字符串按原样存储在数据库中;所以没有应用自动字符串插值。

我想在以后应用这种插值。我可以像eval("\"+description+\"")那样做一些疯狂的事情但是必须有更好的,更红宝石般的方式来做到这一点,对吗?

2 个答案:

答案 0 :(得分:6)

使用%运算符:

'database store string says: %{param}' % {param: 'noice'}
#=> "database store string says: noice"

答案 1 :(得分:0)

class Person
  attr_reader :name

  def initialize(name)
    @name = name
  end

  def description
    'Hello! I am #{self.name}'
  end

  def interpolated_description
    description.split('#').map { |v| v.match(/\{(.*)\}/) ? send($1.split('.').last) : v  }.join
  end
end

p = Person.new('Bot')

p.interpolated_description
=> "Hello! I am Bot"

这个怎么样?

相关问题