Нужно обрезать URL в сценарии powershell - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть URL www.example.com:1234/, и мне нужно обрезать выше до 2 переменных:

  1. example.com
  2. 00234
    • первая цифра порта будет заменена на 00

Может ли это быть достигнуто в PowerShell?

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

вот один из способов сделать это ... [ ухмылка ]

# fake reading in a list of URLs
#    in real life, use Get-Content
$UrlList = @'
www.example.com:1234/
www3.example.net:9876
www.other.example.org:5678/
'@ -split [environment]::NewLine

$Regex = '^www.*?\.(?<Domain>.+):(?<Port>\d{1,}).*$'

$Results = foreach ($UL_Item in $UrlList)
    {
    $Null = $UL_Item -match $Regex

    [PSCustomObject]@{
        URL = $UL_Item
        Domain = $Matches.Domain
        OriginalPort = $Matches.Port
        Port = '00{0}' -f (-join $Matches.Port.ToString().SubString(1))
        }
    }

$Results

вывод ...

URL                        Domain           OriginalPort Port 
---                        ------           ------------ ---- 
www.example.com:1234/     example.com     1234         00234
www3.example.net:9876      example.net      9876         00876
www.other.example.org:5678/ other.example.org 5678         00678    

закомментируйте или удалите любые нежелательные свойства. [ ухмылка ]


за запрос, упрощенная версия ... [ ухмылка ]

$UserInput = 'www.example.com:1234/'

$Regex = '^www.*?\.(?<Domain>.+):(?<Port>\d{1,}).*$'

$Null = $UserInput -match $Regex

$Domain = $Matches.Domain
$Port = '00{0}' -f (-join $Matches.Port.SubString(1))

$Domain
$Port

вывод ...

example.com
00234

надеюсь, что поможет,
Ли

0 голосов
/ 03 ноября 2018

Чтобы предложить улучшение ответ Джеймса С. :

# Input URL string
$urlText = 'www.example.com:1234/'

# Prepend 'http://' and cast to [uri] (System.Uri), which
# parses the URL string into its constituent components.
$urlObj = [uri] "http://$urlText"

# Extract the information of interest
$domain = $urlObj.Host -replace '^www\.' # -> 'example.com'
$modifiedPort = '00' + $urlObj.Port.ToString().Substring(1) # -> '00234'
0 голосов
/ 02 ноября 2018
[uri]$url = 'www.example.com:1234/'

$Value1 = ($url.Scheme).Replace('www.','')
$Value2 = "00" + ($url.AbsolutePath).Substring(1).TrimEnd('/')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...