gpt4 book ai didi

regex - Powershell - 函数匹配 - 返回时获得额外的真/假

转载 作者:行者123 更新时间:2023-12-03 00:29:44 26 4
gpt4 key购买 nike

为什么我在这个函数的结果上得到“True”或“False”(当我只想返回邮政编码时):

Function GetZipCodeFromKeyword([String] $keyword)
{
$pattern = "\d{5}"
$keyword -match $pattern
$returnZipcode = "ERROR"
#Write-Host "GetZipCodeFromKeyword RegEx `$Matches.Count=$($Matches.Count)"
if ($Matches.Count -gt 0)
{
$returnZipcode = $Matches[0]
}

Write-Host "`$returnZipcode=$returnZipcode"
return $returnZipcode
}

cls
$testKeyword = "Somewhere in 77562 Texas "
$zipcode = GetZipCodeFromKeyword $testKeyword
Write-Host "Zip='$zipcode' from keyword=$testKeyword"

Write-Host " "
$testKeyword = "Somewhere in Dallas Texas "
$zipcode = GetZipCodeFromKeyword $testKeyword
Write-Host "Zip='$zipcode' from keyword=$testKeyword"

运行时结果:

$returnZipcode=77562
Zip='True 77562' from keyword=Somewhere in 77562 Texas

$returnZipcode=12345
Zip='False 12345' from keyword=Somewhere in Dallas Texas

最佳答案

如果模式匹配,行 $keyword -match $pattern 返回 $True,否则返回 $False。由于您不对函数输出的值执行任何其他操作。

尝试:

Function GetZipCodeFromKeyword([String] $keyword)
{
$pattern = "\d{5}"
$returnZipcode = "ERROR"
if ($keyword -match $pattern)
{
$returnZipcode = $Matches[0]
}

Write-Host "`$returnZipcode=$returnZipcode"
return $returnZipcode
}

函数输出的任何值都会成为结果的一部分,无论您是使用 Write-Output 显式写入它还是使用 return 返回它,或者只是隐式地有一个管道输出结果。

如果您不希望管道输出从函数输出,请将其分配给变量。例如

$m = $keyword -match $pattern

或重定向:

$keyword -match $pattern >$null

或:

$keyword -match $pattern | Out-Null

或者将它发送到另一个输出流:

Write-Verbose ($keyword -match $pattern)

这让您可以通过设置 $VerbosePreference='Continue' 使其可见(或者将您的函数变成一个 cmdlet 并在调用它时使用 -Verbose 标志).尽管在最后一种情况下,我仍然会先将其分配给一个变量:

$m = $keyword -match $pattern
Write-Verbose "GetZipCodeFromKeyword RegEx match: $m"

关于regex - Powershell - 函数匹配 - 返回时获得额外的真/假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27194148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com