PowerShell排序数组

时间:2012-03-01 15:19:09

标签: powershell

我的阵列正在吐出这个。

a10
a11
a12
a6
a7
a8
a9

任何用于修复它的简短代码:

a6
a7
a8
a9
a10
a11
a12

3 个答案:

答案 0 :(得分:10)

您可以按表达式排序,取出第一个字母后的所有内容并将其转换为整数:

$array | sort { [int]$_.substring(1)}

您还可以通过删除任何非数字字符来使解决方案更通用:

$array | sort { [int]($_ -replace '\D')}

答案 1 :(得分:5)

在这种情况下,最简单的方法是对所有数字进行零填充并将其用于排序:

$a | sort {
  [Regex]::Replace($_, '\d+', 
  {
    $args[0].Value.PadLeft(10, '0')
  })
}

答案 2 :(得分:2)

这些是十六进制值,对吗? ; - )

$array | sort {[convert]::toint32("$_",16)}