ArrayList打印数字

时间:2015-01-19 22:29:04

标签: powershell arraylist

输入数据:

(00:00) Pedro Del Mar & Beatsole - Pianophoria (Original Mix)
 http://goo.gl/L6jAk1 
 [Black Hole Recordings]

03:01 New World - Ushio (Original Mix) 
http://goo.gl/MQyTq7 
[Abora Recordings]

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 (Original Mix)
New World - Ushio (Original Mix)

问题:

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

为什么打印数组列表会生成0,1?我该如何防止这种情况发生?

2 个答案:

答案 0 :(得分:11)

ArrayList.Add方法始终返回您添加的新项目的索引:

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 > 

答案 1 :(得分:4)

ArrayList.Add()返回添加值的索引。通过重定向到$ null或转换为[void]来删除此输出。

$ArrayList.Add($subString) > $null

[void]$ArrayList.Add($subString)