2013-02-14 4 views
1

У меня есть путь строки (окна) с обратной косой черты из данного источника экспорта с форматомSingle Backslash внутри рубина строки

"path\to\something" 

Когда я пытаюсь прочитать, что в рубин, он читает

\t 

и

\s 

как escape-последовательности. В конце концов, я хочу просто

File.join(my_unix_path, "path\to\something") 

Я знаю, что

%q{"path\to\something"} 

работает, но так как у меня есть строка в переменной, я не могу использовать его, как это. Любые идеи, как удалить его или преобразовать в обычный путь unix?

+3

Если вы прочитаете эту строку из файла, это будет фактически '' путь \\ к \\ что-то ". Попробуйте проверить ее. –

+0

Путь unix использует косые черты, а не обратную косую черту. Вы 'gsub' обратную косую черту? –

+0

Возможный дубликат [Обратная косая черта в одиночных кавычках по сравнению с двойными кавычками в Ruby?] (Http://stackoverflow.com/questions/648156/backslashes-in-single-quoted-strings-vs-double-quoted-strings- in-ruby) –

ответ

5

Не беспокойтесь, используя обратную косую черту для путей с Ruby.

Как и многие другие языки, Ruby осознает платформу и автоматически преобразует траектории движения в правильное направление для платформы. Это означает, что вы можете ВСЕГДА использовать слэши в пути, и сделать с ним:

Из документации для IO:

рубин будет преобразовывать имена путей между различными конвенциями операционной системы, если это возможно. Например, в системе Windows имя файла /gumby/ruby/test.rb будет открыто как «\ gumby \ ruby ​​\ test.rb». При указании имени файла для Windows-стиль в строке Руби, помните, чтобы избежать обратной косой черты:

 
"c:\\gumby\\ruby\\test.rb" 

Наши примеры здесь будут использовать Unix-стиле слеша; Файл :: SEPARATOR можно использовать для получения специфического для платформы символа разделителя.

Как добавил информацию, проблемы вы видите с "path\to\something" имея беглый \s и \t потому, что строка в двойных кавычках. Если бы это было в одиночных кавычках, проблема не возникла бы, потому что обратные черты теряют свою магию тогда. См. «Backslashes in Single quoted strings vs. Double quoted strings in Ruby?» для получения дополнительной информации.

0

Если у вас действительно есть "path\to\something" (что я сомневаюсь), то у вас уже есть вкладки и пробелы в этой строке. И если вы действительно хотите "path\to\something" (и я также сомневаюсь), вам не нужно ничего делать. У вас уже есть это.

Если у вас действительно есть 'path\to\something' (что, я думаю, вероятно), то у вас нет обратных косых черт, интерпретируемых как escape-символы. И если вы действительно хотите 'path\to\something' (что, я думаю, вероятно), то вам не нужно ничего делать. У вас уже есть это.

+0

Вот пример строки, в которой я получаю данные (csv): 3; "test.doc"; "1 \ 4 \ 1 \ 18 \ test.doc" И с импортом ruby ​​и CSV строка [2] дает мне строку с этими обратными косыми чертами и с вышеупомянутой проблемой. На данный момент я решил это вручную, открыв файл внутри редактора и заменив все обратные косые черты на forwardlash. – Skully

Смежные вопросы