user1298426
user1298426

Reputation: 3717

Sorting string of numeric in powershell

I have retrieved an array of strings that are

0.0.1
0.0.10
0.0.2

Since this is string with multiple dots I had to remove dots to compare them which I did it following way

$array = $r.Links.outerText.replace('/','') | 
Where {$_ -notmatch $filter} | 
% {$_ -replace('\.', '')} | 
sort {[double]$_}

This gives me

001                                                                                                                                                                       
002
010

but now I want to retrieve the original value of the last value which is 0.0.10. How should I do that? or is there any other approach to sort without replacing the dots?

Upvotes: 1

Views: 192

Answers (1)

Mathias R. Jessen
Mathias R. Jessen

Reputation: 174485

Do the string manipulation inside the scriptblock passed to sort:

... |sort {[double]($_ -replace '\.')}

This way the sorting still works, but the underlying data stays intact


With this in mind, for version-like strings it's probably better to cast to [version] and let the internal comparison logic of that data type work it's magic:

PS ~> -split '0.0.1 0.0.10 0.0.2' |sort {[version]$_}
0.0.1
0.0.2
0.0.10

Upvotes: 4

Related Questions