我收到以下代码的错误。我正在尝试在超过180个字符的文本文件中获取行并将它们解析为新行。我必须从前两个字符开始,然后将它放入第二部分,因为它包含了在线上需要的初始数据:
$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
}
}
答案 0 :(得分:1)
Substring采用索引,以及从该索引开始的字符数。你的第三个子串炸弹,因为你试图占用比字符串更多的字符。将其更改为$ strLength - 181,或者,您可以完全保留第二个参数,只需从第一个参数中的索引开始接受其余字符串。
改变这个:
$line.substring(181, $strLength)
到此:
$line.substring(181)
甚至是这样:
$line.substring(181, $strLength - 181)