首页 > 解决方案 > 为什么字符串显示长度为 1?

问题描述

在下面的代码中,我正在从 Excel 中读取值,将其与另一个字符串匹配并希望读取变量的长度。但是它总是显示值1 ...有人可以解释我为什么吗?

BR

$FilePath = "randompath"

$Excel = New-Object -ComObject Excel.Application

$Workbook = $Excel.Workbooks.Open($FilePath)
$Worksheet = $Workbook.Sheets.Item(1)

$zahl1 = $worksheet.Cells.Item(1, 1).Value2

$docpath | out-string


[string]$Test = $docpath
$Cut = 13

If($Test -match("LBIW")){
$postiitonLBIW=$Test.IndexOf("LBIW")
$result1=$Test.Substring($postiitonLBIW)
$result1=$Test.Split("\")
$zahl1 = $result1 -match "LBIW" 
$zahl1 = $zahl1.length
write-host $zahl1

标签: powershell

解决方案


问题$zahl1设置为$trueor $false,长度为 1。

$zahl1 = $result1 -match "LBIW" 
$zahl1 = $zahl1.length

如果你想要匹配,你必须使用$matches[n]. 您分配的方式$zahl1是输出是否找到匹配项。

更好的方法:

$zahl1Len = 0 #default var incase no matches
if ($result1 -match "LBIW") { # if it has a match, process
    $zahl1 = $matches[1] # or whatever match index
    $zahl1Len = $zahl1.length
}

这样,它被分配第一个匹配项并计算长度(如果匹配)。


推荐阅读