子串代码出错 - Powershell

时间:2012-09-21 17:49:05

标签: substring powershell-v2.0

我收到以下代码的错误。我正在尝试在超过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

   }

}

1 个答案:

答案 0 :(得分:1)

Substring采用索引,以及从该索引开始的字符数。你的第三个子串炸弹,因为你试图占用比字符串更多的字符。将其更改为$ strLength - 181,或者,您可以完全保留第二个参数,只需从第一个参数中的索引开始接受其余字符串。

改变这个:

$line.substring(181, $strLength) 

到此:

$line.substring(181)

甚至是这样:

$line.substring(181, $strLength - 181)