PowerShell排序数组

vxbzzdmp  于 2023-05-29  发布在  Shell
关注(0)|答案(4)|浏览(231)

我的数组是吐出这个的。

a10
a11
a12
a6
a7
a8
a9

任何短/简单的代码来修复它:

a6
a7
a8
a9
a10
a11
a12
lsmepo6l

lsmepo6l1#

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

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

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

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

xvw2m8pv2#

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

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

xhv8bpkk3#

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

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

wztqucjr4#

您可以简单地使用sort方法。

$myArray = $myArray | Sort-Object;

对于问题中所示的特定数组,其他一些答案可能更有效,但一般来说,这就可以了。
信用:Add, Modify, Verify, and Sort Your PowerShell Array - Dr. Scripto

相关问题