如何用单个反斜杠替换字符串中的双反斜杠?
我试图用 来做到这一点"\\a\\b\\c".gsub!("\\\\","\\")
,但这不起作用。
在红宝石字符串中,反斜杠是开始“转义序列”的特殊第一个字符,因此:
\\ - means single backslash
为了更好地理解这个例子可能会有所帮助:
>> s = "\\ha"
=> "\\ha"
>> s.split(//)
=> ["\\", "h", "a"]
如您所见,您只有 3 个字符,第一个是单个反斜杠,由转义序列表示\\
>> s.gsub!("\\","\\\\\\")
=> "\\\\ha"
>> s.split(//)
=> ["\\", "\\", "h", "a"]
我们的字符串现在是 4 个字符,第一个和第二个是反斜杠。
>> s.gsub!("\\\\","\\")
=> "\\ha"
>> s.split(//)
=> ["\\", "h", "a"]
上面的示例使用以下测试:ruby 1.8.7,irb 0.9.5
疯狂的猜测,因为我对红宝石一无所知:
可能是反斜杠在字符串中具有特殊含义吗?试试这个:
"\a\b\c".gsub!("\\\\","\\")