我使用Salesforce ruby gem执行以下操作
@client.search("FIND {#{@email}}")
@email
会返回用户的电子邮件地址。在测试期间,我有一个类似test+test@example.com
的电子邮件地址,这导致了MALFORMED_SEARCH错误。我尝试在电子邮件上拨打to_json
,但这并没有解决问题。我应该在这里做什么样的逃避?有没有通用的方法来做到这一点? (我想避免逃避特定字符,例如' +')
谢谢!
答案 0 :(得分:2)
根据SOSL specification,+是保留字符,必须使用反斜杠进行转义。需要转义的所有字符均为? & | ! { } [ ] ( ) ^ ~ * : \ " ' + -
答案 1 :(得分:0)
要转义这些字符,您可以使用以下gsub
:
"email+special@example.net".gsub(/(\?|&|\||\!|\{|\}|\[|\]|\(|\)|\^|\~|\*|\:|\\|\"|\'|\+|\-)/){|special| "\\" + special }
原始答案:Escape special characters in ruby string to match Salesforce SOQL requirements