我想在"儿童世界"字符串中的撇号之前插入反斜杠.有一个简单的方法吗?
irb(main):035:0> s = "children's world"
=> "children's world"
irb(main):036:0> s.gsub('\'', '\\\'')
=> "childrens worlds world"
Jor*_*ugh 14
来自ruby-doc.org关于替换模式gsub:
序列\ 1,\ 2等可以用于在匹配中内插连续的组
这包括序列\',这意味着"一切都跟着我匹配".  
无论是"\\'"或'\\\''将两者的农产品\'(记住,\有两个双转义和单引号的字符串,而'在单引号字符串进行转义,所以使用单引号在这种情况下,实际上使事情变得更详细).例如:
puts "before*after".gsub("*", "\\'")
"beforeafterafter"
puts "before*after".gsub("*", '\\\'')
"beforeafterafter"
你想要gsub看到的实际上是\\',这可以由两者"\\\\'"和'\\\\\''.所以:
puts s.gsub("'", "\\\\'")
children\'s world
puts s.gsub("'", '\\\\\'')
children\'s world
或者如果你需要做很多事情,\你可以利用这样一个事实:当你使用/.../(或%r{...})时,你不必双重逃避反斜杠:
puts s.gsub("'", /\\'/.source)
children\'s world
>> puts s.gsub("'", "\\\\'")
children\'s world
您的问题是字符串“\'”对于替换字符串中的 gsub 有意义。为了使其按照您想要的方式工作,您必须使用块形式。
s.gsub("'") {"\\'"}
| 归档时间: | 
 | 
| 查看次数: | 7342 次 | 
| 最近记录: |