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