![]() |
Распределить ссылки
Здравствуйте, пытаюсь решить задачу но не знаю как.
На вход скрипта приходят URL трёх видов: Код:
https://site.com/user/anything/anything Из второго только цифры (они всегда разные) Из третьего только субдомейн (в данном случае anything) это я знаю как сделать. После в каждом конкретном случае мне нужно сформировать URL и открыть в браузере. И тут у меня ступор. Каким образом решаются подобные задачи? Как сделать так что бы скрипт различал что это ссылка на пользователя, пост или субдомейн и запускал на исполнение соответствующую сабрутину? Заранее благодарю. |
PowerShell:
Код:
$urls = 'https://site.com/user/anything/anything', |
Foreigner, У меня не сработало:
Цитата:
Код:
$urls = 'https://site.com/user/anything/anything', |
Цитата:
Код:
$urls = 'https://site.com/user/anything/anything', |
PowerShell
В данном случае в качестве альтернативы регулярному выражению можно использовать оператор -Split - это попроще для непосвященных кмк (по кр. мере на простых примерах, объяснял тут https://www.outsidethebox.ms/19453/). Код:
$urls = 'https://site.com/user/anything/anything', |
Цитата:
Цитата:
Foreigner, тоже не сработает для другого порядка. |
Друзья, я дико извиняюсь что был неясен и ввёл вас в заблуждение. Просто эта задача сломала мне остатки мозга. На вход скрипта приходит одного из трёх видов. И в зависимости от вида url я его обрабатываю нужным образом.
Код:
if _url==https://site.com/user/anything/anything goto usercheck |
Цитата:
|
Цитата:
Код:
$urls = ( |
Цитата:
Длинно, но зато CMD
Код:
@Echo Off |
Цитата:
|
Код:
[Uri[]]$u = 'https://site.com/user/anything/anything','https://anything.site.com/anything-anything-12345678/anything','https://anything.site.com/' Что касается сценариев разбора, если количество сегментов в URL всегда фиксировано: Код:
[Uri[]]$u = 'https://site.com/user/anything/anything','https://anything.site.com/anything-anything-12345678/anything','https://anything.site.com' Код:
#requires -version 7 1) если хост назначения состоит из двух элементов (вида site.com), следовательно в данном URL ищем юзера 2) в противном случае, если количество сегментов - единица, искать субдомен 3) иначе вытащить из второго сегмента URL цифровое значение Таким образом: Код:
$u = 'https://site.com/user/anything/anything', Код:
User: user |
Цитата:
Код:
$urls = 'https://anything.site.com/', |
YuS_2, см. выше
|
|
Цитата:
У тебя, кстати, скрипт ограничен версией powershell 7.0, что не есть хорошо, имхо... Fors1k, это малоинформативное условие, ибо если приходит одна из трех видов, то логично предположить, что следующим ходом приходит ещё одна ссылка из трех видов и т.д. Но вот последовательность поступления неясна, т.к. по такому условию допустим вариант, что подряд могут поступать ссылки одного типа неоднократно. Например, так: Код:
'https://site.com/user/anything/anything' |
Я так понимаю, что ссылки уже готовы для каждого случая, за исключением одного пробела.
Приходит одна ссылка, получаем переменную, открываем в браузере. И так может хоть сто раз прийти одна ссылка, но с разными переменными: Цитата:
Код:
[Uri[]]$u = ( |
Цитата:
Fors1k, вы желаете вооружённого конфликта? Цитата:
Код:
[Uri]::EscapeDataString('https://site.com/name lastname/other') |
Цитата:
Было: Цитата:
Цитата:
Цитата:
И с остальным согласен, но увы... без особой необходимости использования того самого тернарного оператора, получаем искусственное ограничение использования скрипта. Ну а что поделать, если у микрософта не хватило мозгов/желания/внимания, для реализации данного оператора с первых версий powershell? Видимо, исходили из того, что условный оператор его вполне заменяет... Цитата:
|
Цитата:
|
Цитата:
|
Powershell:
Код:
$url = (Read-Host "URL").trim() -replace '/$' |
DJ Mogarych, если цифра восьмизначная, в общем-то можно жахать регуляркой, а вот по части сплитов, тримов и репласов... Вот поэтому лучше использовать URI.
Код:
[Uri[]]$u = 'https://site.com/user/anything/anything', |
Код:
[uri] |
Спасибо вам небожители что снисходите со своей помощью к нам - простым смертным.
Без вас я бы точно не справился. И так много ответов. Теперь буду сидеть с Спасибо большое. |
Хотя megaloman уже предлагал решение на командном языке, сам он посетовал на объём кода. В принципе, кое-какие моменты им были намечены правильно (например, регулярка для восьмизначного числа), но многое можно нивелировать.
Код:
@echo off Код:
1 - user Код:
... Код:
url.1=https://anything.site.com |
Время: 12:35. |
Время: 12:35.
© OSzone.net 2001-