将顺序字符串构建到数组中(快速)

时间:2016-10-06 19:41:40

标签: arrays powershell

我编写了以下代码来构建一个包含顺序字符串的数组。 它像我期望的那样工作,但我希望它能更快地运行。有没有更有效的方法在PowerShell中产生我想要的结果?

我是PowerShell的新手,非常感谢您的指导。

$MIN = 1
$MAX = 20000
$ARRAY = @()
$PREFIX = "AA"

$startDTM = (Get-Date) # Start time
FOR ($i=$MIN; $i -le $MAX; $i++)
{
   If ($i -gt 0 -and $i -lt 10) {
     $ARRAY = $ARRAY + ($PREFIX+"00000"+$i)
   }
   If ($i -gt 9 -and $i -lt 100) {
     $ARRAY = $ARRAY + ($PREFIX+"0000"+$i)
   }
   If ($i -gt 99 -and $i -lt 1000) {
     $ARRAY = $ARRAY + ($PREFIX+"000"+$i)
   }
   If ($i -gt 999 -and $i -lt 10000) {
     $ARRAY = $ARRAY + ($PREFIX+"00"+$i)
   }
   If ($i -gt 9999 -and $i -lt 100000) {
     $ARRAY = $ARRAY + ($PREFIX+"0"+$i)
   }
   If ($i -gt 99999 -and $i -lt 1000000) {
     $ARRAY = $ARRAY + ($PREFIX+$i)
   }
}
$endDTM = (Get-Date) #End Time
"Elapsed Time: $(($endDTM-$startDTM).totalseconds) seconds"
$ARRAY.count  #How many loaded.

$ARRAY的示例:

AA000001
AA000002
...
AA019999
AA020000

1 个答案:

答案 0 :(得分:2)

以下单行内容 0.4911672 秒(您的示例 12.9638944 seonds)。结果是一样的。它使用带有十进制说明符的格式字符串来确保有6位数字并将结果存储在数组中:

$MIN = 1
$MAX = 20000
$PREFIX = "AA"

$ARRAY = $MIN .. $MAX | % { "$PREFIX{0:D6}" -f $_ }

您可以使用while循环进一步提高性能(感谢4c74356b41提及):

# ....
$array = while ($MIN -le $MAX) 
{
   "$PREFIX{0:D6}" -f $MIN++
}

这在我的计算机上花了 0.0970327 秒。