Как добавить косую черту в случае необходимости с gsub

Я пытаюсь добавить косую черту, если необходимо:

a = '/var/www'
a.gsub
...

Я не знаю, как это сделать.

6
задан ekremkaraca 4 June 2014 в 19:29
поделиться

5 ответов

Почему вы хотите использовать gsub ?

  1. Вы не выполняете подстановку (из строки ничего не нужно удалять)
  2. Если вы заменяете, и это нужно делать только в одном месте, используйте sub , а не gsub .
  3. Если вы заменяете и хотите изменить строку, используйте подпрограмму ! или 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
2
ответ дан 8 December 2019 в 02:19
поделиться

Это не очень красиво .. но работает:

t = "some text"

t [-1] == 47? t: t + "/"

47 - это код обратной косой черты

0
ответ дан 8 December 2019 в 02:19
поделиться

Следующий сценарий показывает, как это можно сделать:

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/

и работает, заменяя последний символ строки (если это не / ) тем же символом плюс также конечный / .

0
ответ дан 8 December 2019 в 02:19
поделиться
"/var/www".gsub(/[^\/]$/, '\1/')  #=> "/var/www/"
"/var/www/".gsub(/[^\/]$/, '\1/') #=> "/var/www/"
0
ответ дан 8 December 2019 в 02:19
поделиться

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

(a << '/').gsub!('//','/')

или

(a << '/').squeeze('/')

Однако стоит отметить, что оба из них преобразуют любые случаи '//' в '/' в любом месте строки, хотя, если вы имеете дело только с путями, это вряд ли вызовет проблемы.

0
ответ дан 8 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

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