none
powershell命令删除不了第二个“6” RRS feed

  • 问题

  • 大家好,

    我是一个新人,在学习powershell时发现ArrayList如果前两位元素相同,则第二个元素删除不了,这是为什么?是我的命令有问题吗?错误在哪儿?

    例如下面这个例子,运行结果是第二个“6”无法删除,请帮帮忙

    $array=6,6,5,7,5
    [System.Collections.ArrayList]$arraylist=$array
    for($i=0;$i -le $arraylist.Count-1;$i++){
        if($arraylist[$i] -eq 6){
            $arraylist.RemoveAt($i)
            
        }
    }
    $arraylist


    2017年3月21日 8:32

全部回复

  • Hi,

    试试这个:

    $array=6,6,5,7,5
    
    [System.Collections.ArrayList]$arraylist=$array | select -Unique
    
    for($i=0;$i -le $arraylist.Count-1;$i++){
        if($arraylist[$i] -eq 6){
            $arraylist.RemoveAt($i)
            
        }
    }
    $arraylist

    Best regards,

    Andy


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年3月24日 3:15
    版主
  • Hi,

    感谢你的回复,但是你提供的命令输出结果为“5,7”.

    从输出结果看,“Select -Unique”应该是去掉相同的元素,只保留一个。

    这样的话就少了一个“5”元素。

    再次感谢你的回复

    2017年3月25日 3:40
  • $a=6,6,5,7,5

    $b = $a | where-object { $_ -ne 6 }

    2017年3月25日 4:18
  • $array=6,6,5,7,5
    #[System.Collections.ArrayList]$arraylist=$array
    for($i=0;$i -le $arraylist.Count-1;$i++){
        if($arraylist[$i] -eq 6){
            $arraylist.RemoveAt($i)
            $i-- #加这句解决
        }
        "$i"+":"+$arraylist[$i] #这一句能解释结果的原因
    }
    $arraylist
    2017年3月25日 14:46
  • Hi,

    这个:

    $array=6,6,5,7,5
    
    [System.Collections.ArrayList]$arraylist=$array
    
    for($i=0;$i -le $arraylist.Count-1;$i++){
        if(($arraylist[$i] -eq 6)){
            $arraylist.RemoveAt($i)
            $arraylist.RemoveAt($i)
        }
    }
    $arraylist

    Best regards,

    Andy


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年4月6日 4:19
    版主