此方法应该包含一个字符串,如果全部为零,则返回true
;如果字符串中至少有一个其他字符,则返回false
:
Function check0ID($fixedString) {
foreach ($char in $fixedString) {
If ($char -ne "0") {
$false
}
}
$true
}
此方法将返回:
false
true
即使字符串不是全零。返回$false
后,为什么此方法不会停止?注意如果您想提供具有相同功能的更有效方法,请执行以下操作:)
答案 0 :(得分:4)
这里有两件事:
您需要明确使用return
keyword过早退出函数。有关详细信息,请参阅Function return value in PowerShell。
您需要在$fixedString
上调用System.String.ToCharArray
方法,以便将其视为一个字符数组。否则,$char
将等于循环体内的$fixedString
。您可以通过在循环标题下添加以下行来自行查看:
Write-Host "`$char equals $char"
以下是您脚本的固定版本:
Function check0ID($fixedString) {
foreach ($char in $fixedString.ToCharArray()) {
If ($char -ne "0") {
return $false
}
}
$true
}
答案 1 :(得分:2)
你这样做太复杂了。您可以简单地进行正则表达式匹配并返回结果,而不是对字符串中的所有字符进行迭代的所有微观管理:
function ContainsNonZero($fixedString) {
[bool]($fixedString -match '[^0]')
}