【问题标题】:How can I convert a newline to a <BR> tag?如何将换行符转换为 <BR> 标签?
【发布时间】:2026-01-26 19:25:14
【问题描述】:

给定文本区域中的以下文本:

Line 1 stuff.. Line 1 stuff.. Line 1 stuff.. Line 1 stuff.. Line 1 stuff.. 

Line 2 stuff.. Line 2 stuff.. Line 2 stuff.. Line 2 stuff.. Line 2 stuff.. 

我想将新行转换为&lt;BR&gt; 标签,而不是使用simple_format &lt;P&gt; 标签...

所以我尝试了:

 str = str.gsub("\r\n", '<br>')

问题是这会产生两个&lt;BR&gt;标签:

<div class="message">line 1<br><br>Line 2</div>

如何只做一个&lt;BR&gt;标签?

【问题讨论】:

标签: ruby-on-rails ruby regex ruby-on-rails-3


【解决方案1】:

最好的方法是使用simple_format(str):

simple_format() 是一个辅助函数,它将转换新行 然后回车到&lt;br&gt;&lt;p&gt;...&lt;/p&gt; 标签。

参考:http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format

【讨论】:

    【解决方案2】:
    str = str.gsub(/[\r\n]+/, "<br>")
    

    这会将任意数量的连续\r 和/或\n 字符转换为单个&lt;br&gt;

    【讨论】:

      【解决方案3】:

      这意味着您有两次出现“\r\n”。所以你可以在你的正则表达式中清理输入或期待这种情况。

      看看这个:Ruby gsub / regex modifiers?

      【讨论】:

        【解决方案4】:

        输入文本中有两个换行符。如果你想有一个&lt;br/&gt;,就这样做:

        str = str.gsub("\r\n\r\n", '<br />');
        

        【讨论】: