如何转义 Salesforce 搜索查询

How to escape Salesforce search query

我正在使用 Salesforce ruby gem 执行以下操作

@client.search("FIND {#{@email}}")

@email returns 用户的电子邮件地址。在测试期间,我有一个像 test+test@example.com 这样的电子邮件地址,这导致了 MALFORMED_SEARCH 错误。我尝试在电子邮件中调用 to_json,但这并没有解决问题。我应该在这里做什么逃跑?有没有通用的方法来做到这一点? (我想避免转义特定字符,例如“+”)

谢谢!

根据 SOSL specification,+ 是保留字符,必须用反斜杠转义。所有需要转义的字符都是? & | ! { } [ ] ( ) ^ ~ * : \ " ' + -

要转义这些字符,您可以使用以下 gsub:

"email+special@example.net".gsub(/(\?|&|\||\!|\{|\}|\[|\]|\(|\)|\^|\~|\*|\:|\|\"|\'|\+|\-)/){|special| "\" + special }

原回答: