【问题标题】:Why does the String show length 1?为什么字符串显示长度为 1?
【发布时间】:2020-12-16 01:48:15
【问题描述】:

在下面的代码中,我从 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

【问题讨论】:

  • 您提供的代码中没有任何地方引用Length 属性-我们在谈论哪个变量? :)
  • 你是对的。我现在添加了它

标签: powershell


【解决方案1】:

问题是$zahl1 设置为$true$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
}

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

【讨论】:

    猜你喜欢
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多