Я пытаюсь добавить косую черту, если необходимо:
a = '/var/www'
a.gsub
...
Я не знаю, как это сделать.
Почему вы хотите использовать gsub ?
sub
, а не gsub
. !
или gsub!
. Поскольку вы не выполняете подстановку, просто добавьте косую черту, если необходимо:
path << '/' if path[-1] != '/' # Make sure path ends with a slash
Обновление: Чтобы сделать его совместимым со старыми версиями Ruby (1.8.x), немного измените его:
path << '/' if path[-1].chr != '/' # Make sure path ends with a slash
Это не очень красиво .. но работает:
t = "some text"
t [-1] == 47? t: t + "/"
47 - это код обратной косой черты
Следующий сценарий показывает, как это можно сделать:
a="/var/www";
print a + "\n";
a = a.gsub(/([^\/]$)/, '\1/');
print a + "\n";
a = a.gsub(/([^\/]$)/, '\1/');
print a + "\n";
Он выводит:
/var/www
/var/www/
/var/www/
и работает, заменяя последний символ строки (если это не /
) тем же символом плюс также конечный /
.
"/var/www".gsub(/[^\/]$/, '\1/') #=> "/var/www/"
"/var/www/".gsub(/[^\/]$/, '\1/') #=> "/var/www/"
Есть несколько различных способов, которые уже были рассмотрены , через другой в смесь:
(a << '/').gsub!('//','/')
или
(a << '/').squeeze('/')
Однако стоит отметить, что оба из них преобразуют любые случаи '//' в '/' в любом месте строки, хотя, если вы имеете дело только с путями, это вряд ли вызовет проблемы.