Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 数组未按预期存储文本文件中的数据。如何使用Powershell将每行的第一个字放入数组?_Arrays_Powershell_Syntax_Split_Text Files - Fatal编程技术网

Arrays 数组未按预期存储文本文件中的数据。如何使用Powershell将每行的第一个字放入数组?

Arrays 数组未按预期存储文本文件中的数据。如何使用Powershell将每行的第一个字放入数组?,arrays,powershell,syntax,split,text-files,Arrays,Powershell,Syntax,Split,Text Files,这是我的密码: Get-Content 'hist4.txt' | ForEach-Object { $_.split(" ")[0]} | ForEach-Object { $rgbArray += $_ for( $i = 1; $i -le $rgbArray.length; $i++ ) { $rgbA0=$rgbArray[$i] $rgbA1=$rgbArray[$i + 1]

这是我的密码:

Get-Content 'hist4.txt' | ForEach-Object { $_.split(" ")[0]} | 
   ForEach-Object { 

        $rgbArray += $_ 

        for( $i = 1; $i -le $rgbArray.length; $i++ ) {
          $rgbA0=$rgbArray[$i]
          $rgbA1=$rgbArray[$i + 1]

          //compare A0 and A1...
        }
   }
文本文件内容:

1 500
21 456
33 789
40 653 
54 900 
63 1000 
101 1203
  • 我想加载文本文件<代码>获取内容“hist4.txt”
  • 每行有两个元素。我需要第一个元素<代码>ForEach对象{$\分割(“”[0]}
  • 我需要将每一行的第一个元素存储到一个数组中:
    $rgbArray+=$\uu
  • 然后迭代数组的每个元素并执行以下操作:
    for($i=1;$i-le$rgbArray.length;$i++)
  • 如果我使用
    $rgbArray=@()
    ,那么
    split()
    命令中的整个元素列表都存储在
    $rgbArray[0]
    中。这可以防止我在它们上面循环,因为数组长度只有1,即使在数组的0位置存储了数百个值

    如果我使用
    $rgbArray+=
    ,那么我会让元素循环。但是,这会导致数组的每个位置与上一个位置相同,但加上下一个字符,而不是split命令中的整个元素

    例如:
    $rgbArray+=$\ucode>输出

    $rgbArray[0] = 1
    $rgbArray[1] = 12
    $rgbArray[2] = 121
    $rgbArray[3] = 1213
    $rgbArray[4] = 12133
    $rgbArray[5] = 121334
    
    $rgbArray[0] = 1 21 33 40 54 63 ....
    $rgbArray[1] = 
    $rgbArray[2] = 
    $rgbArray[3] = 
    $rgbArray[4] = 
    $rgbArray[5] =
    
    $rgbArray=@($\ux)
    输出

    $rgbArray[0] = 1
    $rgbArray[1] = 12
    $rgbArray[2] = 121
    $rgbArray[3] = 1213
    $rgbArray[4] = 12133
    $rgbArray[5] = 121334
    
    $rgbArray[0] = 1 21 33 40 54 63 ....
    $rgbArray[1] = 
    $rgbArray[2] = 
    $rgbArray[3] = 
    $rgbArray[4] = 
    $rgbArray[5] =
    
    我需要它的地方:

    $rgbArray[0] = 1
    $rgbArray[1] = 21
    $rgbArray[2] = 33
    $rgbArray[3] = 40
    $rgbArray[4] = 54
    $rgbArray[5] = 63
    
    等等

    我想知道我是否没有正确创建数组,以及如何将每行的第一个元素作为单独的数组元素来获取


    在后面的代码中,我希望能够将文本文件中不同行的第一个元素与其他第一个元素进行比较

    首先将前两个管道元素的输出分配给
    $rgbArray
    变量:

    $rgbArray = Get-Content 'hist4.txt' | ForEach-Object { $_.Split(" ")[0] } 
    
    将其平方后,您可以开始处理数据:

    for( $i = 0; $i -lt ($rgbArray.Count - 1); $i++ ) {
      $current = $rgbArray[$i]
      $next    = $rgbArray[$i + 1]
    
      # compare $current and $next here
    }
    

    谢谢你!我可以证实他的工作。有没有办法将这两段合并成一条直线?这将在我稍后的测试中派上用场。