Я хочу заменить www
с этого URL "https://www.cmnetwork.co/courses/3684/redirect"
с newlife
.
Я знаю, что с помощью split мы можем это сделать. Есть ли какой-нибудь стандартный способ сделать это?
Новый сгенерированный URL должен быть:
"https://newlife.cmnetwork.co/courses/3684/redirect"
попробуйте следующий код, чтобы заменить www
из url
, например.
url = "www.google.com"
url.gsub!('www.', 'app.')
url = "www.foo_www_bar.com"
? Это очень опасный совершенно неправильный подход.
@AlekseiMatiushkin проверьте мой обновленный ответ. Надеюсь, что это работает и сохранить.
url = "www.foo_www.bar.com"
?
gsub
в этом случае опасен, так как он заменит каждое вхождение www.
, найденное в строке. /^www\./
было бы умнее, но gsub
все равно было бы излишеством.
Я бы сказал, что если вы хотите манипулировать URL-адресом, вам следует использовать правильный URI-класс и не использовать методы в строке URL-адреса.
uri = URI('https://www.cmnetwork.co/courses/3684/redirect')
uri.host = 'newlife.cmnetwork.co'
uri.to_s
#=> "https://newlife.cmnetwork.co/courses/3684/redirect"
Это может показаться излишним для этого очень простого примера, но это IMO лучшая практика.
Определенно лучше использовать аксессуары.
Используя sub
метод ruby, мы можем заменить подстроку.
url = "https://www.cmnetwork.co/courses/3684/redirect"
url = url.sub('www.','newlife.')
В ОП это может работать нормально, но я бы не стал этого делать в реальной жизни, особенно если бы входящие URL-адреса были неизвестны. Если бы URL-адрес выглядел как «mywww.foo.com», это сломало бы его. Либо используйте решение Спикермана, либо примените дополнительную логику. Кроме того, sub
использует шаблон, поэтому /^www\./
будет умнее.
Задавая такой вопрос, мы хотим увидеть пример того, что вы пробовали. Без этого похоже, что вы не пробовали. См. «Как спросить» и ссылки внизу страницы для получения дополнительной информации.