[英]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.