如何在Ruby中删除此反斜杠

时间:2011-07-06 22:25:21

标签: ruby-on-rails ruby

如何删除此反斜杠?

s = "\""

我已经尝试了s.gsub("\\", "")并且没有删除它,它返回相同的字符串。

4 个答案:

答案 0 :(得分:11)

你的String中实际上没有反斜杠字符。您的示例中的反斜杠只是转义以下双引号并防止它将终止字符串,从而导致语法错误(未终止双引号)。

因此,在IRB中打印该字符串时所看到的实际上并不是反斜杠,而是反斜杠与以下dobule引用,表示双引号已转义。第一次遇到它时很难掌握。看看http://en.wikibooks.org/wiki/Ruby_Programming/Strings#Escape_sequences

长话短说:你的字符串中没有反斜杠所以你无法删除它:)

答案 1 :(得分:3)

gsub将正则表达式作为第一个参数。我相信如果你传递一个字符串,它将首先将其转换为正则表达式。这意味着您需要额外的转义:

s.gsub("\\\\", "")

如果你使用正则表达式,你可以阻止它加倍:

s.gsub(/\\/, "")

这是因为您不必两次转义:一次因为双引号字符串需要您转义\字符,一次因为正则表达式也需要您转义。

答案 2 :(得分:1)

这实际上是一个转义引号(做一个打印来看它)

答案 3 :(得分:0)

我不确定这是否是您问题的解决方案,但是看到这是我在尝试解决问题时看到的第一个SO问题之一,实际上已经解决了问题,这就是我所做的解决我的问题。

所以我有一些带有\(反斜杠)和不需要的引号的CSV.read输出。

arr_of_arrays = CSV.read("path/to/file.csv")

processed_csv = arr_of_arrs.map {|t| eval(t)}

这里的关键是eval()方法。