1

我有一个十进制数的数组,如下所示:

赖恩福尔格
###########
100000.00001
1000000.00001
101000.00001
101010.00001
101020.10001

如果我在没有参数的情况下对其进行排序,我会得到上面的顺序。我希望第二个数字是最后一个条目。我也尝试排序为 int 或 version 或使用正则表达式,但直到现在我没有找到我期望的方式。

$script:array = $script:array | Sort-Object reihenfolge

$script:array = $script:array | Sort-Object { [regex]::Replace($_.reihenfolge, '\d+', { $args[0].Value.PadLeft(20) }) }

$script:array = $script:array | Sort-Object { $_.reihenfolge -as [version] }

$script:array = $script:array | Sort-Object { $_.reihenfolge -as [int] }
4

1 回答 1

4

看起来您正在从文本或 csv 文件中读取数组。在这种情况下,数字实际上是字符串,而不是数字。为了对数字进行排序,请尝试以下操作:

1)如果您的数组来自文本文件,包括行reihenfolge###########使用Get-Contentcmdlet:

$array = Get-Content -Path 'D:\blah.txt' | Select-Object -Skip 2 | Sort-Object @{Expression = { [double]$_ }}
$array

2) 如果您的数据来自一个包含名为 的列的 CSV 文件reihenfolge,请执行以下操作:

$array = (Import-Csv -Path 'D:\blah.txt').reihenfolge | Sort-Object @{Expression = { [double]$_ }}
$array

两者都将返回排序如下的数组:

100000.00001
101000.00001
101010.00001
101020.10001
1000000.00001
于 2019-09-18T11:50:29.153 回答