删除Rails中给定分隔符后的所有文本

时间:2013-09-03 13:28:27

标签: ruby-on-rails ruby

我对Ruby比较陌生,并试图根据以下答案从发送到我的Rails应用程序的电子邮件中删除电子邮件签名:Strip signatures and replies from emails。虽然我知道有很多方法可以删除字符串和匹配字符等,但由于某种原因,这些方法与电子邮件正文中的新行不匹配。

例如,为了尝试确定以' - \ n'开头的签名,我有:

email_body.include? '-- \n'

即使电子邮件在签名中包含此内容,评估结果为false。此外,当我尝试截断字符串时,基于:http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-truncate

truncate(email_body, :separator => '--')

我得到'未定义的方法截断'。似乎这些方面的东西应该有效,但是到目前为止还没有。

在字符串中的签名分隔符后删除所有文本的正确方法是什么?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

这将在签名后为您提供信息。

email = "content -- \n sig"
email[/(?<=--\s\n).*/] #=> " sig"

这也有效,但我喜欢正则表达式

email.split("-- \n").last

重要提示:在您上面的代码中,当您使用'时,您正在使用"。这与每个字符串如何处理和解释转义字符有关。请参阅this answer解释其中的差异。

请记住"-- \n" != '-- \n'

答案 1 :(得分:2)

您确定要查看

吗?
email_body.include? '-- \n'

这是一种罕见的情况。我怀疑你想要

email_body.include? "-- \n"

对于truncate,您需要在字符串对象或TextHelper的上下文中使用它。