0

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

例如,要尝试查明以“--\n”开头的签名,我有:

email_body.include? '-- \n'

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

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

我得到“未定义的方法截断”。似乎这些方面的东西应该起作用,但到目前为止还没有。

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

4

2 回答 2

3

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

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

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

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

重要说明:在您上面的代码中,您'在应该使用". 这与每个字符串如何处理和解释转义字符有关。请参阅解释差异的答案。

只要记住"-- \n" != '-- \n'

于 2013-09-03T13:33:09.730 回答
2

你确定要检查

email_body.include? '-- \n'

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

email_body.include? "-- \n"

至于truncate,则需要在字符串对象上或在TextHelper.

于 2013-09-03T13:31:06.847 回答