使用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