我尝试用一个valiable的内容替换一个sub-str,其名称与sub-str匹配:
>> str = "Hello **name**"
=> "Hello **name**"
>> name = "John"
=> "John"
str.gsub(/\*\*(.*)\*\*/, eval('\1')) # => error!
Run Code Online (Sandbox Code Playgroud)
上面代码中的最后一行是语法错误.和:
>> str.gsub(/\*\*(.*)\*\*/, '\1')
=> "Hello name"
>> str.gsub(/\*\*(.*)\*\*/, eval("name"))
=> "Hello John"
Run Code Online (Sandbox Code Playgroud)
我想要的是:
str.gsub(/\*\*(.*)\*\*/, eval("name")) # => "Hello John"
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.谢谢!
试试这个:
str = "Hello **name**"
name = "John"
str.gsub(/\*\*(.*)\*\*/) { eval($1) }
Run Code Online (Sandbox Code Playgroud)
该gsub方法还接受一个块,该块将被评估,返回值将用作替换.特殊变量$1,$2等,等同于使用\1中的字符串.
比使用更好的替代方法eval()是使用Hash具有替换值的a:
str = "Hello **name**"
names = { "name" => "John" }
str.gsub(/\*\*(.*)\*\*/) { names[$1] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |