2012-01-04 179 views
3

我正在嘗試執行類似以下操作的操作。假設我有以下字符串:將字符替換爲 1

"some string" 

而我想用\ 1替換空格。然而,閹我使用單或雙引號,我沒有得到的結果:

"some string".gsub(" ", "\1") => "somestring" 
"some string".gsub(" ", '\1') => "somestring" 
"some string".gsub(" ", '\\1') => "somestring" 

我要的是:

"some\1string" 

有什麼建議?

回答

4

這只是令人討厭的,因爲\1\9被保留用於替換。

一個可能的解決方案是:

"some string".gsub(" ", '\\\\1') 

這是一種醜陋,但它的工作原理。

一種替代方法是使用不進行取代的塊樣式:

"some string".gsub(" ") { '\1' } 

記住,輸出將是"some\\1string"因爲反斜槓被表示爲一個\\雙引號字符串內。如果你打印出來,你會得到一個反斜槓。

+0

我想到它會是一個簡單的解決方案,只是想不出想起了什麼。感謝那 :)。 – agmcleod

2

這也是可能的:

s = "some string" 

p s.split.join('\1') # "some\\1string"