使用Powershell查找字符串数组中的最大值或最小值时,会裁剪结果字符串的前导零。如何保留零?使用Measure-Object cmdlet在数组中修剪Powershell前导零点
$arr = @("0001", "0002", "0003")
($arr | Measure-Object -Maximum).Maximum
>>> 3
使用Powershell查找字符串数组中的最大值或最小值时,会裁剪结果字符串的前导零。如何保留零?使用Measure-Object cmdlet在数组中修剪Powershell前导零点
$arr = @("0001", "0002", "0003")
($arr | Measure-Object -Maximum).Maximum
>>> 3
枚举阵列是最快的方法,包括:
$max = ''
foreach ($el in $arr) {
if ($el -gt $max) {
$max = $el
}
}
$max
或者使用SortedSet从.NET 4个构架(built-in since Win 8),它比测量 - 对象比人工枚举2倍的速度,但速度慢两倍以上。如果您计划快速排序数据而不重复数据,它仍然可能很有用:它比内置的Sort-Object更快。
([Collections.Generic.SortedSet[string]]$arr).max
显然,这将分配用于数组索引一些存储器,但不作为它会从现有的阵列中重复使用的实际数据。如果你关注它,只是迫使垃圾收集[gc]::Collect()
试试这个
$arr = @("0001", "0002", "0003")
$arr | sort -Descending | select -First 1
没想到的是简单地找出最大值/最小值必须采取在PowerShell中手动循环。谢谢您的回答! – DanEng
呃,不,请参阅简单代码和短代码的其他答案。我只是喜欢我的脚本在处理日志文件中的大量数据时是即时的,所以我提升了手动枚举,因为它比Sort/Sort-Object cmdlet快几倍。 – wOxxOm