替换重音文件路径中的反斜杠

时间:2012-03-16 15:25:41

标签: ruby regex

我尝试替换从Excel文件中获取的文件路径中的后退:

path = "X:\Clients\BUT_Monétique Commerçant\2Gestion\4_Suivi\Suivi_Projet"

如下:

path.gsub!("\\","/")

path.gsub!("\\","\\\\")

没有人工作。知道如何解决这个问题。如您所见,URL包含一些重音字母。

2 个答案:

答案 0 :(得分:0)

您实际上是否使用以下内容来定义path

path = "X:\Clients\BUT_Monétique Commerçant\2Gestion\4_Suivi\Suivi_Projet"

这不起作用,至少在Ruby 1.8.7中。您需要使用单引号,或者使用反斜杠加倍来转义它们。

但是,一旦你这样做,以下内容对我有用:

irb(main):001:0>  path = 'X:\Clients\BUT_Monétique Commerçant\2Gestion\4_Suivi\Suivi_Projet'
=> "X:\\Clients\\BUT_Mon\303\251tique Commer\303\247ant\\2Gestion\\4_Suivi\\Suivi_Projet"
irb(main):002:0> path.gsub!("\\","/")
=> "X:/Clients/BUT_Mon\303\251tique Commer\303\247ant/2Gestion/4_Suivi/Suivi_Projet"

如果这不适合你,你可以粘贴你正在运行的实际代码,以及你得到的结果吗?

答案 1 :(得分:0)

这对我有用:

path = 'X:\Clients\BUT_Monétique Commerçant\2Gestion\4_Suivi\Suivi_Projet'
path.gsub!("\\","/")
p path 
#=> "X:/Clients/BUT_Monétique Commerçant/2Gestion/4_Suivi/Suivi_Projet"

或者,您可以在反斜杠上split,让Ruby的File类确定适合于文件系统的分隔符:

path = 'X:\Clients\BUT_Monétique Commerçant\2Gestion\4_Suivi\Suivi_Projet'
old_path = path.split("\\")
new_path = File.join(old_path)
p new_path
#=> "X:/Clients/BUT_Monétique Commerçant/2Gestion/4_Suivi/Suivi_Projet"