我正在解析文本文件中的一堆数据。我使用Get-Content
获取数据。
然后我遍历$data
中的每一行。拆分空间上的每一行并将这些值加载到数组中。
然后我循环遍历数组中的每个$string
。
如果$string
匹配特定值,我想将其从数组中删除。
$index.Delete(), $index.Remove()
不起作用,这就是我所拥有的。
$data = Get-Content "C:\Users\$userName\Desktop\test-data.txt"
foreach($row in $data){
if($row)
{
[Array]$index = $row.Split(" ")
$i = 0
foreach($string in $index){
Write-Host $string
if($string -eq "value1" -or $string -eq "value2" -or $string -eq "value3")
{
$index.Delete() //This does not work.
}
}
我也尝试了类似的东西,但它根本没有用完。
for($i -eq $index.length; $i -le 0; $i++)
{
Write-Host $index[$i] #this would hit once then give me an error saying the value is null
if($index[$i] -eq "value1" -or $index[$i] -eq "value2" -or $index[$i] -eq "value3")
{
$index.Remove() #does not hit here at all/nor will it work.
Write-Host $index
}
}
如何从$index
数组中删除某些内容?
有更好的方法吗?
非常感谢任何帮助,谢谢。
答案 0 :(得分:5)
最简单的方法是连锁经营者:
[Array]$index = $row.Split(" ") -ne $value1 -ne $value2 -ne $value3
每个元素都将删除数组中与变量中的值匹配的所有元素,结果将传递给下一个元素。完成后,数组将包含与任何$ value变量匹配的元素。
答案 1 :(得分:-1)
试试这个:
[array]$index = $row.Split(" ",[stringSplitOptions]::RemoveEmptyEntries) -notmatch "\b(?:$value1|$value2|$value3)\b"