如何按字母排序字符串数组然后按数字组合排序?

时间:2016-12-31 11:57:13

标签: arrays sorting powershell

我无法弄清楚如何通过字母然后按数字组合对字符串数组进行排序。以下是样本:

$a = @('aa101','aa11','ab10','ab9','a111','a22','a01')

我希望在排序后看到结果如下:

a01
a22
a111
aa11
aa101
ab9
ab10

请使用PowerShell脚本帮助我找到答案。

1 个答案:

答案 0 :(得分:3)

Sort-Object cmdlet可以将一个或多个scriptblock作为其Property参数。第一个参数应删除末尾的所有数字,然后删除所有非数字并转换为整数:

$a |Sort-Object {"$_" -replace '\d',''},{("$_" -replace '\D','') -as [int]}
  • \d是数字的正则表达式
  • \D不是位数
  • 的任何内容的正则表达式