我对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 => '--')
我得到'未定义的方法截断'。似乎这些方面的东西应该有效,但是到目前为止还没有。
在字符串中的签名分隔符后删除所有文本的正确方法是什么?任何帮助表示赞赏。
答案 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
的上下文中使用它。