如何使用gsub替换换行符?

时间:2012-01-17 21:52:28

标签: ruby regex

我有以下内容:

str = str.gsub(re, '<pre><code>\1</code></pre>'

哪个输出:

<pre><code>        stuff...

我希望<pre><code>能够独立上线。如何在那里插入换行符?如果我输入\n,则会显示为HTML。

2 个答案:

答案 0 :(得分:7)

换行符必须用双引号括起来。使用双引号,您需要为模式匹配添加额外的反斜杠:

str = str.gsub(re, "<pre><code>\n\\1\n</code></pre>"

答案 1 :(得分:1)

字符串连接可以帮助简化问题并避免倾斜牙签综合症:

str = str.gsub(re, '<pre><code>\1</code></pre>'

变为:

str = str.gsub(re, "\n<pre><code>\n" + '\1' + "\n</code></pre>\n"

您可以在IRB中看到它正在做什么:

"\n<pre><code>\n" + '\1' + "\n</pre></code>\n"
=> "\n<pre><code>\n\\1\n</pre></code>\n"