2010-02-19 115 views
1

紅寶石1.8.6(2007-09-24 PATCHLEVEL 111)如何在單引號字符串中轉義斜槓?

str = '\&123' 
puts "abc".gsub("b", str) => ab123c 
puts "abc".gsub("b", "#{str}") => ab123c 
puts "abc".gsub("b", str.to_s) => ab123c 
puts "abc".gsub("b", '\&123') => ab123c 
puts "abc".gsub("b", "\&123") => a&123c <--- This I want to achieve using temporary variable 

如果我改變str = '\&123'str = "\&123"它工作正常,但我得到strmatch功能,所以我不能括號內手動指定它.. ..有什麼辦法可以將字符串的'string'改爲"string"的行爲嗎?

+0

如果你從匹配功能海峽,怎麼能有報價?一個字符串是一個字符串,不管它是在某處用單引號還是雙引號聲明的,或者它的來源是什麼都沒有區別。你能否重新提出你的問題,以降低混亂程度。 – johannes 2010-02-19 14:56:05

回答

0

簡單:

str = '\&123' <-- the result of your match function 
str = str.gsub(/\\/, '\\\\') 

您可能還需要看一看here

+0

我收到以下錯誤:未知的正則表達式選項-g – Stevo 2010-02-19 09:41:02

+0

@ stevo84您可以省略'g'選項,因爲使用'gsub'已經使其成爲全局的。 – 2010-02-19 10:20:30

+0

謝謝吉米。魯比不是我的主要發展語言。我更多的是一個.NET人。 – 2010-02-19 16:44:46

0

只是刪除反斜槓:不需要

puts "abc".gsub("b", '&123') 

和號與單引號內反斜線保護(與雙引號)。

+0

唯一的問題是,我從match()函數接收到這個字符串,並且它還包含很多其他轉義字符串(因爲它是一個HTML)。 – Stevo 2010-02-19 10:34:52

0

也許還有一個更簡單的方法,但下面的代碼工作

> str = '\&123' 
> puts "abc".gsub("b", str.gsub(/\\&/o, '\\\\\&\2\1')) 
> => a\&123c 
0

@Valentin

- >我的意思是,從比賽STR不是逐字。因此,另一個(簡單)解決方案的出現,我是不知道的....

"abc".gsub("b") { str } -> a\&123c

相關問題