如何删除此反斜杠?
s = "\""
我已经尝试了s.gsub("\\", "")
并且没有删除它,它返回相同的字符串。
答案 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()方法。