#ruby-on-rails #ruby #regex
#ruby-on-rails #ruby #регулярное выражение
Вопрос:
Итак, у меня есть это:
http://load-balancer:1234/users/123/convert_to_buyer/7654
и я хочу преобразовать в исходный маршрут без цифры в :
users/_/convert_to_buyer/_
У меня есть это
url_with_digits.tr('^A-Za-z///_/', '')
но этого недостаточно -> "http//loadbalancer/users//convert_to_buyer/"
Ответ №1:
Я бы использовал URI ruby.
require 'uri'
url = URI.parse("http://load-balancer:1234/users/123/convert_to_buyer/7654")
result = url.path.gsub(/d /, "_")
#=> "/users/_/convert_to_buyer/_"
Таким образом, вам не нужно иметь сложное регулярное выражение для обработки разных схем URL (перед путем)
Ответ №2:
Вариант 1: /users/convert_to_buyer
Если вы хотите просто преобразовать строку в /users/convert_to_buyer
, это сделает это:
result = subject.gsub(//d |http://[^/]*/, '')
В демо-версии см. Замены внизу.
Вариант 2: users/_/convert_to_buyer/_
Если вы говорите о замене цифр символами подчеркивания и удалении заголовка, соедините его в цепочку или сделайте это в два этапа:
result = subject.gsub(//d /, '_').gsub(/http://[^/]*/, '')
Объяснение
- С
/d
помощью мы сопоставляем косую черту и цифры, |
или…http://[^/]*
начало URL-адреса…- и мы заменяем на пустую строку
Дайте мне знать, если вам нужны какие-либо изменения.