为什么使用 ArrayList 打印数字?

Why does using an ArrayList prints numbers?

输入数据:

(00:00) Pedro Del Mar & Beatsole - Pianophoria(原版混音)
https://www.beatport.com/track/pianophoria-original-mix/5970941
[黑洞录音]

03:01 新世界 - Ushio(原创混音)
https://www.beatport.com/track/ushio-original-mix/6021871
[Abora 录音]

PowerShell 代码:

$readData = Get-Content "C:\Users\SomeUser\inputData - Alternate - 2.txt"
$ArrayList = New-Object System.Collections.ArrayList


function removeBrackets([string]$removeBrackets){


if($removeBrackets.Contains(":") -and ($removeBrackets.IndexOf(":")  -eq 2)){
           $subString = $removeBrackets.Substring(7-1);
           $ArrayList.Add($subString)
          
   
  }
elseif($removeBrackets.Contains(":") -and ($removeBrackets.IndexOf(":")  -eq 3)){ 
         $subString = $removeBrackets.Substring(7+1);
         $ArrayList.Add($subString)
      
     }

}

for($i=0; $i -le $readData.Length; $i++){

     
     removeBrackets($readData[$i])


}

for($a=0; $a -le $ArrayList.Count; $a++){

   Write-Output $ArrayList[$a]
}

输出:

0
1个
Pedro Del Mar & Beatsole - Pianophoria(原创混音)
新世界 - Ushio (Original Mix)

问题:

我创建了一个脚本来过滤掉文本文件中的数据。它从轨道中删除 HTTP 链接和时间。然后它将字符串添加到数组列表

为什么打印 Array List 会产生 0,1?我该如何防止这种情况发生?

ArrayList.Add方法总是returns您添加的新项目的索引:

PS > $ArrayList = New-Object System.Collections.ArrayList
PS > $ArrayList.Add('a')
0
PS > $ArrayList.Add('b')
1
PS >

您可以通过强制转换为 [void]:

来抑制此输出
PS > $ArrayList = New-Object System.Collections.ArrayList
PS > [void]$ArrayList.Add('a')
PS >

或者通过将输出重定向到 $null:

PS > $ArrayList = New-Object System.Collections.ArrayList
PS > $ArrayList.Add('a') > $null
PS > 

ArrayList.Add() returns 添加值的索引。通过重定向到 $null 或转换为 [void].

来摆脱这个输出
$ArrayList.Add($subString) > $null

[void]$ArrayList.Add($subString)