Búsqueda de sitios web

¿Cómo convertir una cadena a booleana en PowerShell?


Mientras trabajaba en un script de PowerShell, recibí el requisito de convertir una cadena a booleana. Existen diferentes métodos para esto. En este tutorial, explicaré cómo convertir cadenas a booleanas en PowerShell usando varios métodos con ejemplos.

Para convertir una cadena a booleana en PowerShell, puede utilizar varios métodos. La conversión directa con [bool]$stringValue funciona para cadenas simples "Verdadero" o "Falso", pero puede resultar engañosa para otros valores. El método [System.Convert]::ToBoolean($stringValue) es más confiable para cadenas "verdaderas" y "falsas", pero arroja errores para entradas no válidas. Para conversiones más seguras, utilice [bool]::TryParse($stringValue, [ref]$booleanValue), que devuelve un valor booleano que indica el éxito sin generar errores.

Valores booleanos en PowerShell

En PowerShell, los valores booleanos están representados por las constantes $true y $false. Estos valores se utilizan para controlar el flujo de scripts y comandos. Por ejemplo, declaraciones condicionales como if y while se basan en valores booleanos para determinar si se debe ejecutar un bloque de código.

Convertir cadena a booleano en PowerShell

En muchas situaciones, es posible que deba convertir una cadena a un valor booleano en PowerShell. Déjame mostrarte cómo hacer esto con ejemplos utilizando diferentes métodos.

Método 1: uso de fundición directa

La conversión directa es una de las formas más sencillas de convertir una cadena a booleana en PowerShell. Este método funciona bien si la cadena es "Verdadero" o "Falso" (no distingue entre mayúsculas y minúsculas).

Aquí hay un ejemplo.

$stringTrue = "true"
$booleanTrue = [bool]$stringTrue
Write-Output $booleanTrue  # Output: True

$stringFalse = "false"
$booleanFalse = [bool]$stringFalse
Write-Output $booleanFalse  # Output: False

En este ejemplo, las cadenas "true" y "false" se convierten a sus equivalentes booleanos, $true y $false, respectivamente.

Lea ¿Cómo convertir una cadena a Int en PowerShell?

Método 2: usar [System.Convert]::ToBoolean()

Permítame mostrarle otro método confiable para convertir cadenas a booleanos en PowerShell. Puede utilizar el método [System.Convert]::ToBoolean(), que convierte una cadena en booleano según su contenido.

Aquí hay un ejemplo:

$stringValue = "true"
$booleanValue = [System.Convert]::ToBoolean($stringValue)
Write-Output $booleanValue  # Outputs: True

$stringValue = "false"
$booleanValue = [System.Convert]::ToBoolean($stringValue)
Write-Output $booleanValue  # Outputs: False

Este método que no distingue entre mayúsculas y minúsculas manejará correctamente "verdadero" y "falso". Sin embargo, arrojará un error si la cadena no es un valor booleano válido.

Ejecuté el script de PowerShell anterior y puedes ver el resultado exacto en la siguiente captura de pantalla:

Leer Convertir cadena a JSON en PowerShell

Método 3: usar [bool]::TryParse()

Para manejar cadenas no válidas con elegancia, puede utilizar el método [bool]::TryParse(). Este método intenta analizar la cadena y devuelve un valor booleano que indica si la conversión se realizó correctamente.

Aquí tienes un ejemplo completo para entenderlo mejor.

$stringTrue = "true"
[bool]$booleanTrue = $false
[System.Boolean]::TryParse($stringTrue, [ref]$booleanTrue)
Write-Output $booleanTrue  # Output: True

$stringFalse = "false"
[bool]$booleanFalse = $false
[System.Boolean]::TryParse($stringFalse, [ref]$booleanFalse)
Write-Output $booleanFalse  # Output: False

# Handling invalid input
$invalidString = "notABoolean"
[bool]$booleanInvalid = $false
$success = [System.Boolean]::TryParse($invalidString, [ref]$booleanInvalid)
Write-Output $success  # Output: False
Write-Output $booleanInvalid  # Output: False

En este ejemplo, Boolean.TryParse intenta convertir la cadena y establece la variable booleana en consecuencia. Si la conversión falla, devuelve false para el estado correcto y la variable booleana permanece sin cambios.

Mire el resultado en la siguiente captura de pantalla:

Método 4: función personalizada con lógica condicional

Puede crear una función personalizada en PowerShell para manejar la conversión de cadena a booleano. Esta función puede incluir lógica adicional, como el manejo de diferentes representaciones de valores booleanos (por ejemplo, "sí"/"no", "1"/"0").

A continuación se muestra el script completo de PowerShell.

Function ConvertTo-Bool {
    [CmdletBinding()]
    param(
        [Parameter(Position=0, Mandatory=$true)]
        [string]$Value
    )

    switch -regex ($Value.Trim().ToLower()) {
        '^(1|true|yes|on)$' { return $true }
        '^(0|false|no|off)$' { return $false }
        default { throw "Invalid input: '$Value'. Please use 1/0, true/false, yes/no, or on/off." }
    }
}
$result = ConvertTo-Bool "true"
Write-Output $result

$result = ConvertTo-Bool "false"
Write-Output $result

Esta función personalizada utiliza una declaración de cambio para hacer coincidir diferentes representaciones de valores booleanos.

Puede ver el resultado en la siguiente captura de pantalla:

Conclusión

PowerShell tiene diferentes métodos para convertir una cadena en un valor booleano. En este tutorial, expliqué cómo convertir una cadena a booleana en PowerShell usando varios métodos. La mayoría de las veces, prefiero utilizar el enfoque de conversión directa, pero el método más confiable es [System.Convert]::ToBoolean() para estas conversiones.

Artículos relacionados