2009-12-25 8 views
1

J'ai quelques questions à l'aide gsub pour remplacer les barres obliques doubles. Le problème est le suivant:Utiliser gsub pour remplacer les barres obliques doubles dans Ruby

J'ai construit un petit script pour analyser les fichiers YAML pour un emplacement de répertoire, puis à utiliser pour glob les fichiers dans ce répertoire. Dites ceci est le répertoire dans lequel il trouve:

C:\Program Files\Adobe\Adobe Flash CS3\en\Configuration\ActionScript 3.0\Classes 

Ceci est un répertoire Windows et les antislashs sont échappés avec l'analyseur YAML, donc cela devient vraiment chargé de l'analyseur syntaxique comme:

C:\\Program Files\\Adobe\\Adobe Flash CS3\\en\\Configuration\\ActionScript 3.0\\Classes 

Pour utiliser ce répertoire , je voulais gsub loin ces doubles barres obliques:

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

Cet appel a remplacé la plupart des doubles antislashs dans le chemin, bien que le script ne fonctionnait toujours pas. Quand je regardais ce que le chemin était devenu, je trouvais qu'il y avait encore une barre oblique inverse qui n'a pas été remplacé par gsub:

\en 

Comment expliquer ce comportement étrange?

+0

Je suis un peu clair. Y at-il en fait antislashs doubles dans la chaîne (par exemple, est-il « C: Program Files \\\\ \\\\ Adobe Flash CS3 \\\\ ... ») ou sont tout simplement antislashs et vous faites allusion au fait que tu dois leur échapper? Parce que dans la chaîne ' "C: \\ Program Files \\ Adobe \\ Adobe Flash CS3 \\ en \\ Configuration \\ ActionScript 3.0 \\ Classes"' (par exemple, avec juste antislashs normale), que gsub fonctionne parfaitement pour moi . – Chuck

Répondre

0

semble fonctionner très bien sur ma fin.

irb(main):001:0> string = "C:\\Program Files\\Adobe\\Adobe Flash CS3\\en\\Configuration\\ActionScript 3.0\\Classes" 
=> "C:\\Program Files\\Adobe\\Adobe Flash CS3\\en\\Configuration\\ActionScript 3.0\\Classes\n" 
irb(main):003:0> string.gsub('\\', '/') 
=> "C:/Program Files/Adobe/Adobe Flash CS3/en/Configuration/ActionScript 3.0/Classes\n" 

Quelle version de Ruby utilisez-vous? Peut-être que quelque chose d'autre se passe dans le script? Parce que ça marche bien pour moi.

Questions connexes