1

I have a URL www.example.com:1234/ and I need to trim above in to 2 variables:

  1. example.com
  2. 00234
    • first digit of port will be replaced by 00

Can this be achieved in PowerShell?

3 Answers 3

1

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

Sign up to request clarification or add additional context in comments.

Comments

1
[uri]$url = 'www.example.com:1234/'

$Value1 = ($url.Scheme).Replace('www.','')
$Value2 = "00" + ($url.AbsolutePath).Substring(1).TrimEnd('/')

Comments

1

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'

1 Comment

Good ole rfc2606 ;)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.