我有一个非常大的字符串需要转义它中的所有单引号,所以我可以将它提供给JavaScript而不会让它失望.我无法控制外部字符串,因此无法更改源数据.
例:
Cote d'Ivoir -> Cote d\'Ivoir
Run Code Online (Sandbox Code Playgroud)
(实际的字符串很长,包含很多单引号)
我正在尝试通过使用gsub字符串,但无法让它工作:
a = "Cote d'Ivoir"
a.gsub("'", "\\\'")
Run Code Online (Sandbox Code Playgroud)
但这给了我:
=> "Cote dIvoirIvoir"
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
a.gsub("'", 92.chr + 39.chr)
Run Code Online (Sandbox Code Playgroud)
但得到了相同的结果; 我知道它与正则表达式有关,但我从来没有得到那些.
ste*_*lag 58
%q分隔符在这里派上用场:
# %q(a string) is equivalent to a single-quoted string
puts "Cote d'Ivoir".gsub("'", %q(\\\')) #=> Cote d\'Ivoir
Run Code Online (Sandbox Code Playgroud)
Cho*_*ett 20
问题是\'在gsub替换中意味着"匹配后字符串的一部分".
您可能最好使用块语法:
a = "Cote d'Ivoir"
a.gsub(/'/) {|s| "\\'"}
# => "Cote d\\'Ivoir"
Run Code Online (Sandbox Code Playgroud)
或哈希语法:
a.gsub(/'/, {"'" => "\\'"})
Run Code Online (Sandbox Code Playgroud)
还有hacky解决方法:
a.gsub(/'/, '\#').gsub(/#/, "'")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24798 次 |
| 最近记录: |