2011-04-06 43 views
2

我試圖用「\$」替換字符串中前面的「$」。例如,「$5 special」應該變成「\$5 special」。

我已經試過:

"$5 special".gsub(/^\$/, "\$") => "$5 special" 
"$5 special".gsub(/^\$/, "\\$") => "\\$5 special" 
"$5 special".gsub(/^\$/, "\\\$") => "\\$5 special" 

任何人都知道如何做到這一點?

回答

6

你的第二個例子,

"$5 special".gsub(/^\$/, "\\$") 

應該這樣做。之所以在輸出中看到兩個斜線,是因爲Ruby將字符串中的斜槓轉義爲字面值。如果你把它打印到標準輸出,你會看到這是你所期望的:

irb(main):009:0> a = "$5 special".gsub(/^\$/, "\\$") 
=> "\\$5 special" 
irb(main):011:0> print a 
\$5 special=> nil 
3

只需使用單引號替代:

>> "$5 special".gsub(/^\$/, '\$') #=> "\\$5 special" 
>> puts "$5 special".gsub(/^\$/, '\$') #=> nil 
\$5 special 
0

gsub可以接受的字符串爲好,在這種情況下你不必轉義$

"$5 special".gsub("$", '\$') #=> "\\$5 special"