0

我在下面的代码中遇到错误。我正在尝试在文本文件中提取超过 180 个字符的行并将它们解析为新行。我必须从第二部分中取出前 22 个字符并将其放入,因为它包含行中需要的初始数据:

$data = get-content "C:\TestFile.txt"
$strAcct= @()
$strPart1= @()
$strPart2= @()
$strLength= @()
foreach($line in $data)
{
   if ( $line.length -gt 181)
   { $strLength = $line.length
     $strAcct += $line.substring(0,22) 
     $strPart1 += $line.substring(0,180)
     $strPart2 += $line.substring(181,$strLength)

     Add-Content "C:\TestFile-Output.txt" $strPart1
     Add-Content "C:\TestFile-Output.txt" $strAcct $strPart2



   } 
   Else {
   Add-Content "C:\TestFile-Output.txt" $line

   }

}
4

1 回答 1

1

子字符串需要一个索引,以及从该索引开始的字符数。您的第三个子字符串炸弹,因为您试图获取比字符串中更多的字符。将其更改为 $strLength - 181,或者,您可以完全省略第二个参数,只取从第一个参数中的索引开始的其余字符串。

改变这个:

$line.substring(181, $strLength) 

对此:

$line.substring(181)

甚至这个:

$line.substring(181, $strLength - 181)
于 2012-09-21T17:51:44.373 回答