Powershell 子字符串()出错

Powershell 子字符串()出错,powershell,Powershell,我对SubString()函数有问题,它有以下错误: 我试着打印出变量的值,但它们看起来不错。在PowerShell中,子字符串的工作方式略有不同 使用现有代码,您可以尝试以下操作: $fileName = "Name of TheFolder_NE_ED" $lengthFileName = $fileName.length $shortenLengthFileName = $lengthFileName - 5 Write-Host("Name of TheFolder_NE_ED").S

我对
SubString()
函数有问题,它有以下错误:


我试着打印出变量的值,但它们看起来不错。

在PowerShell中,子字符串的工作方式略有不同

使用现有代码,您可以尝试以下操作:

$fileName = "Name of TheFolder_NE_ED"
$lengthFileName = $fileName.length
$shortenLengthFileName = $lengthFileName - 5
Write-Host("Name of TheFolder_NE_ED").Substring($shortenLengthFileName,$lengthFileName)
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
说明:

子字符串中的第一个参数应该是字符的起始索引(在本例中为18)。现在,从该字母开始计数,直到字符(必须作为第二个参数传递)。否则,默认情况下它将转到字符串的末尾

因此,如果要传递2个参数并执行此操作,请将其更改为:

$fileName = "Name of TheFolder_NE_ED"
$lengthFileName = $fileName.length
$shortenLengthFileName = $lengthFileName - 5
Write-Host("Name of TheFolder_NE_ED").Substring($shortenLengthFileName)
如需进一步参考,请参阅


希望有帮助。

与什么不同?从零开始的索引和长度非常常见(批处理、vbscript、jscript)。错误是使用了超出范围的长度。这里的长度是23。请尝试
.substring(18,20)
。在Java中也尝试一次。计数再次从第一个参数的索引值开始。我不会批评您的解决方案,Ranadip,我不会说Java;-)如果index+length超过了整个字符串长度,任何语言都会出错,请忽略悬垂部分或显示错误数据。@LotPings:是的,这就是我想说的。这将是错误的:)
Write-Host("Name of TheFolder_NE_ED").Substring($shortenLengthFileName,5)