0

如何\"从字符串中删除?

例子:

'"\"asdasd"\"'.gsub('\"', '') # => "\"asdasd\""

为什么\"不删除?

4

4 回答 4

4

它被删除。输出中的\"不是反斜杠后跟双引号,它只是一个被转义的双引号字符,因为inspect在双引号中打印字符串。如果您尝试打印该字符串,它将显示为:

"asdasd"

稍微扩展一下:('"\"asdasd"\"'也可以用双引号写成 as "\"\\\"asdasd\"\\\"")是一个包含双引号、后跟反斜杠、后跟双引号、后跟 asdasd、后跟双引号、后跟反斜杠,后跟双引号。

您的调用gsub删除了两次出现的反斜杠,后跟双引号。结果是"\"asdasd\"", 也可以写成'"asdasd"'and 是一个包含双引号、后跟 asdasd 和双引号的字符串。所以反斜杠双引号被删除,但简单的双引号没有。我认为这是预期的行为。

于 2013-09-03T11:21:33.217 回答
0

它确实删除了它们。inspect这是更改前 ed时字符串的样子:

'"\"asdasd"\"'               # => "\"\\\"asdasd\"\\\""

这是之后:

'"\"asdasd"\"'.gsub('\"','') # => "\"asdasd\""

所以它以前有一些反斜杠引号序列。现在它只有引号。

于 2013-09-03T11:30:55.017 回答
0

这怎么样 ?

str = '"\"asdasd"\"'
p str[/\w+/] # => "asdasd"
于 2013-09-03T11:26:34.767 回答
0

在 ruby​​ 中,特殊符号在转换为字符串时以反斜杠开头。即"\"\"\\\"

看看这个你就明白了

'"\"asdasd"\"'                               # => "\"\\\"asdasd\"\\\""
'"\"asdasd"\"'.gsub("\\", '')                # => "\"\"asdasd\"\""
'"\"asdasd"\"'.gsub("\\", '').gsub("\"", '') # => "asdasd"
于 2013-09-03T11:20:30.713 回答