Powershell 前导零使用度量对象 cmdlet 在数组中修剪



使用 Powershell 查找字符串数组中的最大值或最小值时,将修剪结果字符串的前导零。如何保留零?

$arr = @("0001", "0002", "0003")
($arr | Measure-Object -Maximum).Maximum
>>> 3 
枚举

数组是最快的方法:

$max = ''
foreach ($el in $arr) {
    if ($el -gt $max) {
        $max = $el
    }
}
$max

或者使用来自 .NET 4 框架的 SortedSet(自 Win 8 以来内置),它比 Measure-Object 快 2 倍,但比上面的手动枚举慢两倍。如果您计划快速对数据进行排序而不重复,仍然可能很有用:它比内置的 Sort-Object 更快。

([Collections.Generic.SortedSet[string]]$arr).max
显然,它会为数组

索引分配一些内存,但不会为实际数据分配,因为它将从现有数组中重用。如果您担心它,只需使用[gc]::Collect()强制垃圾收集

试试这个

$arr = @("0001", "0002", "0003")
$arr | sort -Descending | select -First 1

最新更新