【发布时间】:2011-10-27 19:25:27
【问题描述】:
s = "#main= 'quotes'
s.gsub "'", "\\'" # => "#main= quotes'quotes"
这似乎是错误的,我希望得到"#main= \\'quotes\\'"
当我不使用转义字符时,它会按预期工作。
s.gsub "'", "*" # => "#main= *quotes*"
所以逃跑肯定是有关系的。
使用 ruby 1.9.2p290
我需要用反斜杠和引号替换单引号。
更多的不一致:
"\\'".length # => 2
"\\*".length # => 2
# As expected
"'".gsub("'", "\\*").length # => 2
"'a'".gsub("'", "\\*") # => "\\*a\\*" (length==5)
# WTF next:
"'".gsub("'", "\\'").length # => 0
# Doubling the content?
"'a'".gsub("'", "\\'") # => "a'a" (length==3)
这是怎么回事?
【问题讨论】:
-
类似问题:stackoverflow.com/questions/6499443/… 和 stackoverflow.com/questions/2180322/… 。我必须结合 [ruby] [gsub] 标签,然后查看“FAQ”标签。
-
@Andrew:感谢图书馆员的工作。
标签: ruby-on-rails ruby regex gsub