繁体   English   中英

如何在Ruby中为字符串添加单个反斜杠字符?

[英]How to add a single backslash character to a string in Ruby?

我想在“儿童世界”字符串中的撇号之前插入反斜杠。 有一个简单的方法吗?

irb(main):035:0> s = "children's world"
=> "children's world"
irb(main):036:0> s.gsub('\'', '\\\'')
=> "childrens worlds world"

来自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("'") {"\\'"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM