gpt4 book ai didi

powershell - IF语句仍然被触发

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

我正在锻炼,但我不明白为什么它不起作用。

如果字符串仅包含“!”,它仍会触发第一个if语句。

Function Get-BobResponse() {
[CmdletBinding()]
Param(
[string]$HeyBob
)

if(($HeyBob -match "!") -and ($HeyBob -like "*?*")){
return "Calm down, I know what I'm doing!"
}

if($HeyBob -match "!"){
return "Whoa, chill out!"
}

if($HeyBob -Like "*?*"){
return "Sure"
}

if($HeyBob -eq ""){
return "Fine. Be that way!"
}
else{
return "Whatever"
}
}

最佳答案

此通配符模式:

*?*

将匹配具有至少一个字符的任何字符串-因为 ?是一个元字符,表示“完全是任何字符之一”。

您可以使用 WildcardPattern.Escape()来转义元字符或组:
$questionMark = [WildcardPattern]::Escape('?')
$HeyBob -like "*$questionMark*"

在单引号(即文字)字符串中,可以使用反引号( `)手动对其进行转义:
$HeyBob -like '*`?*'

请注意,您必须将双引号转义为双引号引起来的字符串(因为PowerShell对可扩展字符串和通配符模式都使用了反引号)
$HeyBob - like "*``?*"

您也可以在两种情况下都使用正则表达式,尽管在这种情况下,您仍然需要转义 ?(因为它是正则表达式中的特殊量词):
$HeyBob -match '!' -and $HeyBob -match [regex]::Escape('?')

关于powershell - IF语句仍然被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57058002/

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