我无法弄清楚如何通过字母然后按数字组合对字符串数组进行排序。以下是样本:
$a = @('aa101','aa11','ab10','ab9','a111','a22','a01')
我希望在排序后看到结果如下:
a01 a22 a111 aa11 aa101 ab9 ab10
请使用PowerShell脚本帮助我找到答案。
答案 0 :(得分:3)
Sort-Object
cmdlet可以将一个或多个scriptblock作为其Property参数。第一个参数应删除末尾的所有数字,然后删除所有非数字并转换为整数:
$a |Sort-Object {"$_" -replace '\d',''},{("$_" -replace '\D','') -as [int]}
\d
是数字的正则表达式\D
是不是位数