Использование gsub для замены двойной косой черты в Ruby - PullRequest
1 голос
/ 25 декабря 2009

У меня проблемы с использованием gsub для замены двойной косой черты. Проблема заключается в следующем:

Я создал небольшой скрипт для синтаксического анализа YAML-файлов на предмет местоположения каталога и последующего его использования для перемещения файлов в этом каталоге. Скажем, это каталог, который он находит:

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

Это каталог Windows, и обратный слэш экранируется парсером YAML, поэтому он действительно загружается из парсера как:

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

Чтобы использовать этот каталог, я хотел убрать двойные косые черты:

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

Этот вызов заменил большую часть двойной обратной косой черты в пути, хотя скрипт все еще не работал. Когда я посмотрел на то, каким стал путь, я обнаружил, что есть еще один обратный слеш, который не был заменен gsub:

\en

Чем объясняется это странное поведение?

1 Ответ

0 голосов
/ 25 декабря 2009

Кажется, отлично работает на моем конце.

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"

Какую версию Ruby вы используете? Возможно, что-то еще происходит в сценарии? Потому что он отлично работает в IRB для меня.

...