【问题标题】:String#gsub messing up the replacement?String#gsub 搞砸了替换?
【发布时间】:2016-07-30 08:26:48
【问题描述】:

我正在尝试用外部内容动态替换页面的一部分。

这里是source.html

<!DOCTYPE html>
<html>
  <head>
    <%= foobar %>
  </head>
  <body>
    This is body
  </body>
</html>

还有一个替换字符串inject.js

var REGEXP  = /^\'$/i; var foo = 1;

通过组合两者来输出文件的 ruby​​ 代码。

pageContent = File.read('./source.html')
jsContent = File.read('./inject.js');
output = pageContent.gsub("<%= foobar %>", jsContent)
File.open('./dest.html', "w+") do |f|
  f.write(output)
end

但是,由于inject.js 中的\',我搞砸了dest.html

<!DOCTYPE html>
<html>
  <head>
    var REGEXP  = /^
  </head>
  <body>
    This is body
  </body>
</html>$/i; var foo = 1;
  </head>
  <body>
    This is body
  </body>
</html>

如何解决这个问题?

【问题讨论】:

    标签: ruby gsub


    【解决方案1】:

    尝试使用gsub 块形式:

    output = pageContent.gsub("&lt;%= foobar %&gt;") { jsContent }

    【讨论】:

      【解决方案2】:

      This one 可以在这种情况下为您提供帮助。

      你能不能试试%q{jsContent}类似的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 2012-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多