我正在通过接受 JSON 作为字符串的脚本(不是我的)将一些 JSON 传递给服务器。
JSON 的某些内容包含单引号,因此我想确保在将任何单引号传递给脚本之前对其进行转义。
我尝试了以下方法:
> irb
> 1.9.3p194 :001 > x = "that's an awesome string"
> => "that's an awesome string"
> 1.9.3p194 :002 > x.sub("'", "\'")
> => "that's an awesome string"
> 1.9.3p194 :003 > x.sub("'", "\\'")
> => "thats an awesome strings an awesome string"
但似乎无法获得正确的语法。
最佳答案
sub("'", "\'")
不起作用的原因是因为 "\'"
与 "'"
。在双引号内,转义单引号是可选的。
sub("'", "\\'")
不起作用的原因是 "\\'"
扩展为反斜杠后跟单引号.在 sub
或 gsub
参数中,后跟一些字符的反斜杠具有与相应的全局变量相当的特殊含义。特别是在这种情况下,全局变量 $'
保存最后一个匹配点之后的子字符串。 sub
或 gsub
参数位置中的 "\\'"
指的是类似的东西。为了避免这种特殊约定,您应该将替换字符串放在 block 中而不是参数中,并且由于您不仅要匹配一个,所以应该使用 gsub
而不是 sub
:
gsub("'"){"\\'"}
关于ruby - 如何转义 Ruby 中的单引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700218/