2012-01-17 277 views
1

我有以下几点:如何使用gsub替换换行符?

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

,输出:

<pre><code>  stuff... 

我想为<pre><code>本身是在其上线。我怎样才能在那里插入一个换行符?如果我输入\n它显示为HTML。

回答

7

换行符需要用双引号括起来。用双引号,你需要一个额外的反斜杠的模式匹配:

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

要明确一点,'\ n''是“literal-slash,n”,而“\ n”'是“newline”。在单引号内部,反斜杠字符不是特殊的,除了'\''。 – tadman 2012-01-17 22:18:25

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"