s = "#main= 'quotes'
s.gsub "'", "\'" # => "#main= quotes'quotes"
这似乎是错误的,我希望得到"#main= \'quotes\'"
当我不使用escape-char时,它会按预期工作。
s.gsub "'", "*" # => "#main= *quotes*"
所以逃跑一定有什么关系。
使用ruby 1.9.2p90
我需要用反斜杠和引号替换单引号。
更多不一致:
"\'".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)
这是怎么回事?
您被正则表达式替换字符串中'
的特殊性绊倒了