Cómo convertir una cadena en un entero en PowerShell

  1. Usa [int] para Convertir Cadenas a Enteros en PowerShell
  2. Usa [System.Int32] para Convertir Cadenas a Enteros en PowerShell
  3. Define el Tipo de Dato de una Variable para Convertir Cadenas a Enteros en PowerShell
  4. Conclusión
Cómo convertir una cadena en un entero en PowerShell

En PowerShell, saber cómo convertir cadenas en enteros es una habilidad valiosa. Este tutorial te enseñará a convertir cadenas en enteros en PowerShell.

Veremos la técnica de usar [int] y [System.Int32] para realizar esta conversión, lo que te permitirá modificar tus datos fácilmente.

Usa [int] para Convertir Cadenas a Enteros en PowerShell

En PowerShell, podemos usar [int] para convertir una cadena en un entero. Esto se llama casting de tipo o conversión de tipo.

La siguiente sintaxis es una simple declaración de asignación en PowerShell, donde estamos convirtiendo una cadena en un entero y asignando el resultado a la variable $integerVariable.

Sintaxis:

$integerVariable = [int]$stringVariable

Parámetros:

  • $integerVariable: Esta es una variable que contendrá el valor entero después de la conversión.
  • [int]: Esto se usa para convertir el valor de $stringVariable a un entero.
  • $stringVariable: Esta es otra variable o expresión que contiene una cadena que deseas convertir en un entero.

Consideremos que tenemos una variable $a como se muestra a continuación.

$a = 123

El tipo de dato de $a es un entero.

$a.GetType().Name

Salida:

Int32

Pero cuando encerramos el valor con " ", el tipo de dato se convertirá en cadena.

$b = "123"
$b.GetType().Name

Salida:

String

Para convertir el tipo de dato de la cadena ($b = "123") a un entero, podemos usar [int] como se muestra a continuación.

$b = $b -as [int]
$b.GetType().Name

En el código anterior, comenzamos con la variable $b. El valor actual y el tipo de dato de $b son desconocidos para nosotros en este momento, pero queremos asegurarnos de que se trate como un entero.

A continuación, el $b -as [int], usamos el operador -as para un casting de tipo seguro. Intenta convertir el valor de $b al tipo especificado [int].

Si se puede convertir, el resultado se asigna de nuevo a $b. Si no, $b permanece sin cambios.

En la siguiente línea, usamos $b.GetType().Name para determinar el tipo de dato de la variable $b después de la operación de casting de tipo.

Ahora, revisemos lo que sucede con una variable $b teniendo un valor y tipo específico:

  • Si $b inicialmente contiene un entero (por ejemplo, $b = 42), el código no cambiará su tipo y la salida será Int32.

  • Si $b inicialmente contiene una cadena que puede convertirse exitosamente en un entero (por ejemplo, $b = "123"), el código cambiará su tipo a un entero y la salida será Int32.

  • Si $b inicialmente contiene una cadena que no puede convertirse en un entero (por ejemplo, $b = "hola"), el código no cambiará su tipo y la salida será el tipo del valor original, que, en este caso, es una cadena, así que la salida sería String.

Salida:

Int32

Dada la salida Int32, implica que el valor inicial de la variable $b (antes de este fragmento de código) era un entero o una cadena que podría convertirse exitosamente en un entero.

Usa [System.Int32] para Convertir Cadenas a Enteros en PowerShell

El [System.Int32] es una forma de casting de tipo que convierte una cadena en un entero en PowerShell, que le dice explícitamente a PowerShell que trate una variable o expresión como un tipo de dato Int32.

En la sintaxis, convertimos una cadena en $stringValue a un entero, almacenando el resultado en $intValue. Esto se hace usando la sintaxis [System.Int32] para especificar el tipo de dato deseado, preparando $stringValue para operaciones numéricas.

Sintaxis:

$intValue = [System.Int32]$stringValue

En el código, comenzamos estableciendo una variable de cadena llamada $stringValue al valor "456". Luego, procedemos a convertir esta cadena en un entero usando [System.Int32] y almacenar el resultado en otra variable, $intValue.

Después de esta conversión, indagamos sobre el tipo de dato de la variable $intValue usando $intValue.GetType().Name.

Salida:

Int32

La salida nos dice que la variable $intValue contiene un entero, específicamente un entero de 32 bits, como se indica por Int32, que es el nombre del tipo de dato.

Define el Tipo de Dato de una Variable para Convertir Cadenas a Enteros en PowerShell

PowerShell puede detectar el tipo de dato de una variable por sí solo.

No necesitamos ser específicos sobre el tipo de dato y declarar una variable. Pero, podemos definir el tipo de dato de una variable antes de ella para obligar el tipo de dato.

Demos un ejemplo.

[int]$c = "456"
$c.GetType().Name

En el código anterior, declaramos la variable y la inicializamos así: [int]$c = "456". Esta línea le dice a PowerShell que convierta explícitamente la cadena "456" en un entero, y el resultado se almacena posteriormente en la variable $c.

A continuación, queremos saber el tipo de dato de la variable $c, así que usamos $c.GetType().Name. Esta es nuestra forma de comprobar si el casting de tipo fue exitoso.

Salida:

Int32

La salida anterior es Int32, lo que indica que la cadena "456" ha sido convertida en un entero. Pero, si intentas forzar un tipo de dato entero a un valor de cadena, obtendrás un error como en el siguiente ejemplo de código.

[int]$data = "storage"
$c.GetType().Name

En el código anterior, comenzamos declarando una variable llamada $data y asignándole el valor de cadena "almacenamiento". La siguiente línea, [int]$data, representa un intento de convertir forzosamente la cadena "almacenamiento" a un tipo de dato entero.

Ahora, vamos a verificar el tipo de dato de la variable $data usando $data.GetType().Name.

Salida:

Cannot convert value "storage" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:1
+ [int]$data = "storage"
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullyQualifiedErrorId : RuntimeException

Intentamos convertirla como un entero usando [int]. Sin embargo, dado que la cadena "almacenamiento" no puede convertirse en un entero, PowerShell no cambia el tipo de la variable y devuelve un mensaje de error "La cadena de entrada no estaba en un formato correcto.".

Conclusión

En este artículo, hemos aprendido a convertir cadenas en enteros usando [int] y [System.Int32]. Ahora, podemos pasar fácilmente de texto a números en PowerShell.

Al controlar los tipos de variables, obtienes precisión y versatilidad en tus scripts.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Artículo relacionado - PowerShell Convert