PowerShell排序数组
我的阵法是吐出这个PowerShell排序数组,powershell,Powershell,我的阵法是吐出这个 a10 a11 a12 a6 a7 a8 a9 任何简短/简单的代码来修复它: a6 a7 a8 a9 a10 a11 a12 在这种情况下,最简单的方法是将所有数字归零,并将其用于排序: $a | sort { [Regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(10, '0') }) } 您可以按表达式排序,将第一个字母后的所有内容转换为整数: $array | sort { [int]$_
a10
a11
a12
a6
a7
a8
a9
任何简短/简单的代码来修复它:
a6
a7
a8
a9
a10
a11
a12
在这种情况下,最简单的方法是将所有数字归零,并将其用于排序:
$a | sort {
[Regex]::Replace($_, '\d+',
{
$args[0].Value.PadLeft(10, '0')
})
}
您可以按表达式排序,将第一个字母后的所有内容转换为整数:
$array | sort { [int]$_.substring(1)}
您还可以通过删除任何非数字字符使解决方案更通用:
$array | sort { [int]($_ -replace '\D')}
这些是十六进制值,对吗?;-)
@Joey$a | sort{$_-replace'\d+',$..padleft(10,'0')}是好的吗?或者这样有什么问题?有<代码>$\u指的是完整的项目,而不是您案例中的匹配项。因此,结果不是
a000000001
,而是a0000000a1
。它可能不再适用于字符串中的多个数字,尽管我现在太累了,无法尝试。上面的解决方案应该会产生一个»自然«排序,其中几乎包含任何包含数字的字符串列表。您的第二行“$array | sort{[int]($|-replace'\D')}”能够修复填充了“2012-03-02_log-X.txt”的数组。非常感谢。仅供参考:如果您只有一个字符串数组(智能编号是一个问题),那么您只需要$array | sort
$array | sort {[convert]::toint32("$_",16)}