使用Ruby从字符串中删除双反斜杠

时间:2014-07-17 10:10:02

标签: ruby-on-rails ruby replace gsub

我有以下字符串:

string = "\"2014\\/jul\\/grandes\\/volvo-s-60-d5-momentum-1403253_2.jpg\""

我想要gsub到这个字符串:

string = "2014/jul/grandes/volvo-s-60-d5-momentum-1403253_2.jpg"

以下是我认为它应该如何运作:

string.gsub(/\\./,'')

但这会返回:

"\"2014julgrandesvolvo-s-60-d5-momentum-1403253_3.jpg\""

我做错了什么?

3 个答案:

答案 0 :(得分:5)

你无缘无故地在regexp中有一个“点”。而不是:

string.gsub(/\\./,'')

尝试:

string.gsub(/["\\]/,'')

或者,@ sawa的学分,请尝试这样做:

string.tr('"\\','')

或者归功于@Chirantan:

string.delete('"\\')

基准:http://gist.github.com/dominikh/208915

答案 1 :(得分:2)

string.delete('\\\"')

是一种可能的解决方案。但我相信那里有更好的。

答案 2 :(得分:0)

使用String#[]=方法的另一个讨厌的。这只是为了好玩: -

string[/["\\]/] = '' until string[/["\\]/].nil?
# or
string[/["\\]/] = '' while string =~ /["\\]/

#gsub是解决此问题的更好方法。如果您不想修改原始字符串,请使用String#slice代替String#[]=。那就是它。