如何从字符串中删除\"
?
示例:
'"\"asdasd"\"'.gsub('\"', '') # => "\"asdasd\""
为什么\"
没有删除?
答案 0 :(得分:4)
它被删除了。输出中的\"
不是反斜杠后跟双引号,它只是一个双引号字符,因为inspect
以双引号打印字符串而被转义。如果您尝试打印字符串,它将显示为:
"asdasd"
要稍微扩展一下:'"\"asdasd"\"'
(也可以使用双引号作为"\"\\\"asdasd\"\\\""
编写)是一个包含双引号的字符串,后跟反斜杠,后跟双引号,然后是asdasd,然后是双引号,接着是反斜杠,然后是双引号。
您对gsub
的调用会删除两次反斜杠后跟双引号。结果是"\"asdasd\""
,也可以写成'"asdasd"'
,是一个包含双引号的字符串,后跟asdasd,后跟双引号。所以反斜杠双引号被删除了,但简单的双引号却没有。我认为这是预期的行为。
答案 1 :(得分:0)
在ruby中,特殊符号在转换为字符串时以反斜杠开头。
即"\"
到\"\\\"
检查一下,你会理解
'"\"asdasd"\"' # => "\"\\\"asdasd\"\\\""
'"\"asdasd"\"'.gsub("\\", '') # => "\"\"asdasd\"\""
'"\"asdasd"\"'.gsub("\\", '').gsub("\"", '') # => "asdasd"
答案 2 :(得分:0)
这是怎么回事?
str = '"\"asdasd"\"'
p str[/\w+/] # => "asdasd"
答案 3 :(得分:0)
确实删除了它们。以下是在更改前inspect
编辑时字符串的样子:
'"\"asdasd"\"' # => "\"\\\"asdasd\"\\\""
以下是:
'"\"asdasd"\"'.gsub('\"','') # => "\"asdasd\""
因此它之前有一些反斜杠引号序列。现在它只有引号。