【问题标题】:Replace 1 newline with <br>, >= 2 with <br><br>将 1 个换行符替换为 <br>,>= 2 替换为 <br><br>
【发布时间】:2017-04-06 11:17:08
【问题描述】:

我使用以下内容将每个换行符替换为&lt;br&gt;

h(my_string).gsub(/(?:\n\r?|\r\n?)/, '<br>').html_safe

我想知道是否有任何解决方案,如果有一个换行符,然后用一个&lt;br&gt; 替换它。如果有两个或更多的换行符,那么用两个&lt;br&gt;替换所有,即&lt;br&gt;&lt;br&gt;

【问题讨论】:

  • 不完全是您问题的答案,但 Rails 的 simple_format 正好解决了这些问题。也许这对你来说是更好的方法。
  • 我很抱歉,但它并不像问题中描述的那样处理它。 According to the docs: "两个或多个连续的换行符(\n\n) 被视为一个段落并被包裹在

    标记中。一个换行符 (\n) 被视为换行符并附加一个
    标记。 "

  • 我没有说它像问题中描述的那样处理它,只是它处理了这些问题。通常一个新段落比两个换行符更有意义,所以我想建议它。很抱歉打扰您。

标签: html ruby-on-rails ruby-on-rails-5


【解决方案1】:

你可以重复几次

h(my_string).gsub(/(\n\r?){2,}/, '<br><br>').gsub(/\n/, '<br>').html_safe

【讨论】:

  • 不起作用。 5 个换行符产生 5 个&lt;br&gt;。旁注:您需要附加 .html_safe 以将其解析为 html 而不是字符串。
  • @FellowStranger 忘记添加 \r。更新了答案。并感谢旁注,太专注于替换换行符的代码:)
最近更新 更多