Cómo convertir una cadena en un entero en PowerShell
-
Usa
[int]para Convertir Cadenas a Enteros en PowerShell -
Usa
[System.Int32]para Convertir Cadenas a Enteros en PowerShell - Define el Tipo de Dato de una Variable para Convertir Cadenas a Enteros en PowerShell
- Conclusión
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$stringVariablea 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
$binicialmente contiene un entero (por ejemplo,$b = 42), el código no cambiará su tipo y la salida seráInt32. -
Si
$binicialmente 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
$binicialmente 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íaString.
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.
