在powershell中对数字字符串进行排序

Sorting string of numeric in powershell

我检索到的字符串数组是

0.0.1
0.0.10
0.0.2

因为这是带有多个点的字符串,所以我不得不删除点以比较它们,我按照以下方式进行了比较

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

这给了我

001                                                                                                                                                                       
002
010

但现在我想检索最后一个值 0.0.10 的原始值。 我该怎么做?或者有没有其他方法可以在不替换点的情况下进行排序?

在传递给 sort:

的脚本块中执行字符串操作
... |sort {[double]($_ -replace '\.')}

这样排序仍然有效,但基础数据保持不变


考虑到这一点,对于 version-like 字符串,最好转换为 [version] 并让该数据类型的内部比较逻辑起作用,这很神奇:

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