Sha*_*dog 11 powershell boolean tryparse
我正在尝试将PowerShell脚本的参数转换为布尔值.这条线
[System.Convert]::ToBoolean($a)
Run Code Online (Sandbox Code Playgroud)
只要我使用诸如"true"或"false"的有效值,就可以正常工作,但是当传递无效值(例如"bla"或"")时,将返回错误.我需要类似于TryParse的东西,如果输入值无效则将值设置为false并返回指示转换成功或失败的布尔值.为了记录,我尝试了[boolean] :: TryParse和[bool] :: TryParse,PowerShell似乎没有认出它.
现在我不得不通过两个额外的if语句来笨拙地处理这个问题.
让我感到惊讶的是,到目前为止我发现的任何方法和博客文章都没有处理无效的值.我是否遗漏了一些东西,或者PowerShell孩子对于输入验证来说太酷了?
arc*_*444 17
你可以使用try/catch块:
$a = "bla"
try {
$result = [System.Convert]::ToBoolean($a)
} catch [FormatException] {
$result = $false
}
Run Code Online (Sandbox Code Playgroud)
得到:
> $result
False
Run Code Online (Sandbox Code Playgroud)
Mik*_*ray 11
TryParse只要你使用ref并首先声明变量就应该工作:
$out = $null
if ([bool]::TryParse($a, [ref]$out)) {
# parsed to a boolean
Write-Host "Value: $out"
} else {
Write-Host "Input is not boolean: $a"
}
Run Code Online (Sandbox Code Playgroud)
$a = 'bla'
$a = ($a -eq [bool]::TrueString).tostring()
$a
False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19511 次 |
| 最近记录: |