簡體   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