Массив сортировки PowerShell - PullRequest
4 голосов
/ 01 марта 2012

Мой массив выплевывает это.

a10
a11
a12
a6
a7
a8
a9

Любой короткий / простой код для исправления:

a6
a7
a8
a9
a10
a11
a12

Ответы [ 3 ]

10 голосов
/ 01 марта 2012

Вы можете отсортировать по выражению, взять все после первой буквы и привести ее к целому числу:

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

Вы также можете сделать решение более общим, удалив все нецифровые символы:

$array | sort { [int]($_ -replace '\D')}
5 голосов
/ 01 марта 2012

Самый простой способ в этом случае - обнулить все числа и использовать их для сортировки:

$a | sort {
  [Regex]::Replace($_, '\d+', 
  {
    $args[0].Value.PadLeft(10, '0')
  })
}
2 голосов
/ 02 марта 2012

Это шестнадцатеричные значения, верно? ; -)

$array | sort {[convert]::toint32("$_",16)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...