我的阵列正在吐出这个。
a10
a11
a12
a6
a7
a8
a9
任何用于修复它的简短代码:
a6
a7
a8
a9
a10
a11
a12
答案 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)}