I have a URL www.example.com:1234/
and I need to trim above in to 2 variables:
example.com
00234
00
Can this be achieved in PowerShell?
[uri]$url = 'www.example.com:1234/'
$Value1 = ($url.Scheme).Replace('www.','')
$Value2 = "00" + ($url.AbsolutePath).Substring(1).TrimEnd('/')
here's one way to do it ... [ grin ]
# 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
output ...
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
comment out or delete any unwanted properties. [ grin ]
per request, a simplified version ... [ grin ]
$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
output ...
example.com
00234
hope that helps,
lee
To offer an improvement to James C.'s answer :
# 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'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.