【问题标题】:Removing the leading and trailing newline characters删除前导和尾随换行符
【发布时间】:2013-02-10 07:35:15
【问题描述】:

我将文本与 html 标签一起保存。例如,如果我输入'What is your name?',它将在表格中存储为'<p>What is your name?</p>'

如果对报告采用相同的值,则它在字符串的开头和结尾有一个额外的换行符。我正在使用代码@question.description.html_safe 输出@question.description 的值。

请告诉我一个解决方案,从该段落字符串的开头和结尾删除"\n"

【问题讨论】:

    标签: html ruby string


    【解决方案1】:

    String#strip返回 str 的副本,删除了前导和尾随空格。

    "\n what\r\n".strip
    #=> "what"
    

    如果要更改变量,则需要执行以下操作之一

    s = "\nyour string\n"
    s.strip!    # first option
    s = s.strip # second option
    

    【讨论】:

    • 这似乎对字符串没有影响。所以我认为在段落字符串的开头和结尾会有一个

      标签和

      标签。因为它是 PDF 报告,所以我无法检查。请告诉我如何删除那些开头和结尾的段落标签?
    • 读取函数说明,它返回一个副本。如果您阅读一下文档,您甚至可以在 strip 下看到另一个名为 strip! 的函数。
    • 我不知道为什么这是赞成的。这也删除了空格,并且 OP 询问了换行符。
    【解决方案2】:

    删除所有 html 标签 使用strip_tags方法

    strip_tags('<p>What is your name?</p>')
    

    只删除开始和结束&lt;p&gt;&lt;/p&gt;标签

    s = ' <p>What is <p> your</p> name?</p> '
    s = s.strip.sub('<p>','').chomp('</p>')
    #=> "What is <p> your</p> name?"
    

    删除所有&lt;p&gt;&lt;/p&gt;标签

    '<p>What is your name?</p>'.gsub(/<p>|<\/p>/,'')
    

    【讨论】:

    • 如果我只想删除开头的

      标签和末尾的

      而不删除其他标签?
    • '\n&lt;p&gt;What is &lt;/p&gt;&lt;p&gt;your name?&lt;/p&gt;\n'.strip!.gsub(/\A&lt;p&gt;|&lt;\/p&gt;\Z/, '') — 上面的示例将删除所有 para 标记
    • 我只想删除起始

      标记和最后一个

      标记。所有其他标签都需要按原样存在。请帮忙。
    【解决方案3】:

    Rails 有一个很好的字符串方法:squish 它也会从字符串中间删除换行符。

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2012-12-09
      • 2017-08-03
      • 1970-01-01
      • 2011-04-01
      • 2022-09-26
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多