2014-01-26 66 views
1

我在使用正則表達式將外部變量插入字符串時遇到問題。使用正則表達式將變量插入字符串 - Ruby

我有一個字符串,它看起來像:

string = "7 -" 

我想插入一個整數作爲字符串到「7」之間的空間和「 - 」,我試着使用插值,像這樣:

variable = "15" 
    string = string.gsub(/(\S?\d+)(\s)(\s)(\D)/, '\1\2#{variable}\3\4') 

(?的\ S是考慮到任何「 - 」連接到一個數字它是正還是負)

輸出是看起來像這樣的字符串:

"7 \#{variable} -" 

但我所要的輸出是這樣的:

"7 15 -" 

回答

0

使用雙引號。單引號字符串不會內插。

string = "7 -" 
variable = "15" 
string = string.gsub(/(\S?\d+)(\s)(\s)(\D)/, "\\1\\2#{variable}\\3\\4") 
string # => "7 15 -" 
+0

就像一個魅力,謝謝!我剛剛學習Ruby,通常使用雙引號。大多數時候使用雙引號是最佳實踐嗎?或者只是在處理正則表達式? –

+0

@NickMeehan,歡迎來到堆棧溢出!有些人試圖回答你的問題。如果這對你有幫助,你可以通過[接受答案](http://meta.stackexchange.com/a/5235)告訴社區,這對你最有用。 – falsetru

1

這裏是一個優雅的解決你的問題:

s = "7 -" 
v = 15 
string = s.gsub(/\d\s/, "#{s.delete("-").strip} #{v}") 
#=> "7 15 -" 
+0

在這種情況下,如何刪除和刪除工作?我一直在困難的時間。 –

+0

's.delete(「 - 」)。strip'是:'delete'刪除連字符,'strip'從's'的實例中刪除空格,如下所示:'s =「7 - 」'The空格返回到字符串:'... ip} _ \ s _#{v}「'懂嗎? – fyz

相關問題