Escape двойные и единственные обратные косые черты в строке в Ruby

Если вы хотите получить последовательность Фибоначчи до n:

def fib(n):
    series = [0,1]
    if n > 1:
        c = 1
        while c <= n:
            series.append(c)
            c = series[-2] + series[-1]
    return series
16
задан Kevin Burke 13 June 2013 в 16:13
поделиться

2 ответа

Просто удвойте каждый обратный слеш, вот так:

"\\\\servername\\some windows share\\folder 1\\folder2\\"
23
ответ дан 30 November 2019 в 16:49
поделиться

Попробуйте это

puts '\\\\servername\some windows share\folder 1\folder2\\'
#=> \\servername\some windows share\folder 1\folder2\

Пока вы используете одинарные кавычки для определения строки (например, 'foo'), одинарные \ не нужно экранировать. кроме следующих двух случаев

  1. \\\ работает сам по себе до одного \. Таким образом, \\\\ даст вам начальное \\\, которое вам нужно.
  2. Заглавная \ в конце вашего пути будет пытаться избежать закрывающей кавычки, поэтому вам понадобится \\\ и там.

В качестве альтернативы,

вы можете определить элегантный помощник для себя. Вместо громоздких \ разделителей путей, вы можете использовать / в сочетании с таким методом:

def windows_path(foo)
  foo.gsub('/', '\\')
end

puts windows_path '//servername/some windows share/folder 1/folder2/'
#=> \\servername\some windows share\folder 1\folder2\

Отлично!

13
ответ дан 30 November 2019 в 16:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: