如何\"
从字符串中删除?
例子:
'"\"asdasd"\"'.gsub('\"', '') # => "\"asdasd\""
为什么\"
不删除?
它被删除。输出中的\"
不是反斜杠后跟双引号,它只是一个被转义的双引号字符,因为inspect
在双引号中打印字符串。如果您尝试打印该字符串,它将显示为:
"asdasd"
稍微扩展一下:('"\"asdasd"\"'
也可以用双引号写成 as "\"\\\"asdasd\"\\\""
)是一个包含双引号、后跟反斜杠、后跟双引号、后跟 asdasd、后跟双引号、后跟反斜杠,后跟双引号。
您的调用gsub
删除了两次出现的反斜杠,后跟双引号。结果是"\"asdasd\""
, 也可以写成'"asdasd"'
and 是一个包含双引号、后跟 asdasd 和双引号的字符串。所以反斜杠双引号被删除,但简单的双引号没有。我认为这是预期的行为。
它确实删除了它们。inspect
这是更改前 ed时字符串的样子:
'"\"asdasd"\"' # => "\"\\\"asdasd\"\\\""
这是之后:
'"\"asdasd"\"'.gsub('\"','') # => "\"asdasd\""
所以它以前有一些反斜杠引号序列。现在它只有引号。
这怎么样 ?
str = '"\"asdasd"\"'
p str[/\w+/] # => "asdasd"
在 ruby 中,特殊符号在转换为字符串时以反斜杠开头。即"\"
到\"\\\"
看看这个你就明白了
'"\"asdasd"\"' # => "\"\\\"asdasd\"\\\""
'"\"asdasd"\"'.gsub("\\", '') # => "\"\"asdasd\"\""
'"\"asdasd"\"'.gsub("\\", '').gsub("\"", '') # => "asdasd"