我的数组是吐出这个的。
a10 a11 a12 a6 a7 a8 a9
任何短/简单的代码来修复它:
a6 a7 a8 a9 a10 a11 a12
lsmepo6l1#
你可以按表达式排序,取第一个字母之后的所有内容并将其转换为整数:
$array | sort { [int]$_.substring(1)}
您还可以通过删除任何非数字字符来使解决方案更通用:
$array | sort { [int]($_ -replace '\D')}
xvw2m8pv2#
在这种情况下,最简单的方法是对所有数字进行零填充,并使用它进行排序:
$a | sort { [Regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(10, '0') }) }
xhv8bpkk3#
这些是十六进制值,对吧?;-)
$array | sort {[convert]::toint32("$_",16)}
wztqucjr4#
您可以简单地使用sort方法。
$myArray = $myArray | Sort-Object;
对于问题中所示的特定数组,其他一些答案可能更有效,但一般来说,这就可以了。信用:Add, Modify, Verify, and Sort Your PowerShell Array - Dr. Scripto
4条答案
按热度按时间lsmepo6l1#
你可以按表达式排序,取第一个字母之后的所有内容并将其转换为整数:
您还可以通过删除任何非数字字符来使解决方案更通用:
xvw2m8pv2#
在这种情况下,最简单的方法是对所有数字进行零填充,并使用它进行排序:
xhv8bpkk3#
这些是十六进制值,对吧?;-)
wztqucjr4#
您可以简单地使用sort方法。
对于问题中所示的特定数组,其他一些答案可能更有效,但一般来说,这就可以了。
信用:Add, Modify, Verify, and Sort Your PowerShell Array - Dr. Scripto