我有一个非常大的字符串,需要对其中的所有单引号进行转义,这样我就可以在不打乱它的情况下将其提供给JavaScript.

例子:

Cote d'Ivoir  -> Cote d\'Ivoir  

(实际字符串很长,包含许多单引号)

我试图通过在字符串上使用gsub来实现这一点,但无法实现:

a = "Cote d'Ivoir"
a.gsub("'", "\\\'")

但这给了我:

=> "Cote dIvoirIvoir"

我也试过:

a.gsub("'", 92.chr + 39.chr)

但得到了同样的结果;我知道这和正则表达式有关,但我从来都不懂.

推荐答案

%q分隔符在这里很有用:

# %q(a string) is equivalent to a single-quoted string
puts "Cote d'Ivoir".gsub("'", %q(\\\')) #=> Cote d\'Ivoir

Ruby相关问答推荐

Rbenv说未安装已安装的版本

类似于模块的 attr_accessor 和 attr_reader 的东西?

查看 Savon 请求 XML 而不发送到服务器

在Ruby中将嵌套哈希键从CamelCase转换为snake_case

何时在 Ruby 方法中使用 `self.foo` 而不是 `foo`

在 Ruby 中,如何确定字符串是否不在数组中?

在基于值的哈希数组上唯一

如何在不按 Enter 的情况下获取单个字符?

RSpec: stubbing Kernel::sleep?

C# ?? Ruby 中的运算符?

按键对哈希进行分组并对值求和

Ruby数组each_slice_with_index?

Ruby:module、require和include

动态设置 Ruby 对象的属性

ruby module_function 与包含模块

如何在没有警告的情况下重新定义 Ruby 常量?

Ruby 中的自然语言处理

如果公司使用 C++、C# 或 Java 作为应用程序语言,为什么要学习 Perl、Python、Ruby?

Ruby Style:如何判断嵌套的哈希元素是否存在

通过 factory_girl 协会查找或创建记录