将布尔值转换为字符串

时间:2016-04-12 21:24:11

标签: powershell

我正在尝试将PowerShell中的布尔值转换为以下内容:

  • True→GREEN
  • False→RED

这是我的相关代码

$SecMasSQLRes | ForEach-Object {
    if ($SecMasSQLRes.CusipPercent -lt 25) {
        Write-Host CusipStatus = GREEN
    } else {
        Write-Host CusipStatus = RED
    }

    if ($SecMasSQLRes.ISINPercent -lt 10) {
        Write-Host IsinStatus = GREEN
    } else {
        Write-Host IsinStatus = RED
    }

    if ($SecMasSQLRes.SymbolPercent -lt 10) {
        Write-Host SymbolStatus = GREEN
    } else {
        Write-Host SymbolStatus = RED
    }
}

$CusipResults = $SecMasSQLRes.CusipPercent -lt 25
$IsinResults = $SecMasSQLRes.ISINPercent -lt 10
$SymbolResults = $SecMasSQLRes.SymbolPercent -lt 10

$CusipResults
$IsinResults
$SymbolResults

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题:

  • 根据@PetSerAl的建议使用if / else声明:

    if (condition) {'GREEN'} else {'RED'}
    
  • 使用switch声明:

    switch (condition) { $true {'GREEN'} default {'RED'} }
    
  • 根据@TessellatingHeckler的建议使用哈希表:

    $light = @{$true = 'GREEN'; $false = 'RED'}
    $light[(condition)]
    
  • 使用布尔值(隐式转换为整数)作为数组中的索引,如@Mathias R. Jessen所示:

    @('RED', 'GREEN')[(condition)]
    

就个人而言,我认为散列表方法是最干净的方法,所以我更喜欢那个:

$light = @{
    $true  = 'GREEN'
    $false = 'RED'
}

$SecMasSQLRes | ForEach-Object {
    Write-Host CusipStatus = $light[($_.CusipPercent -lt 25)]
    Write-Host IsinStatus = $light[($_.ISINPercent -lt 10)]
    Write-Host SymbolStatus = $light[($_.SymbolPercent -lt 10)]
}