繁体   English   中英

Ruby on Rails:具有可变解析的字符串

[英]Ruby on Rails: String with variable parsing

在ruby中,我可以使用这样的日期构建变量

irb(main):004:0> a = "#{Date.today}" => "2012-03-23"

但是如何使用已创建的字符串执行此操作:

irb(main):005:0> a = '#{Date.today}' => "\#{Date.today}"

背景是,我在数据库中存储具有不同变量的路径,我需要在运行时替换这些变量。

谢谢你的帮助。

你可以像这样eval字符串

a = 'Date.today'
result = eval(a)

虽然这有效,但如果你不完全控制那个字符串的内容(如果处理任何类型的用户输入真的很难),那将是非常危险的。

所以一般建议你不要使用eval 相反,您可以构建一些简单的DSL(特定于域的语言),其中您的字符串中的标记稍后会被预先计算的值替换。 一个简单的例子可能是:

a = "Today is :today"
result = a.gsub(/:(\w+)/) do |match|
  case $1
  when "today"
    Date.today.to_s
  end
end

由于您没有评估任意Ruby代码,因此更安全。 或者,根据您的实际使用情况,您可能也会对字符串格式感到满意。

如果你真的想运行任意Ruby代码,你可以像这样使用eval:

a = '#{Date.today}'
eval("\"#{a}\"")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM