Convertir Cadena a Entero – 2xsoftware

PowerShell pertenece a una clase de lenguaje dinámico, no fuertemente tipado. Esto significa que no necesita declarar variables y establecer tipos de datos específicos antes de usarlas. Cuando crea una variable, no necesita especificar su tipo: PowerShell intentará resolverlo por sí mismo.

¿Cómo convertir una cadena en una variable entera en PowerShell?

Al realizar varias acciones en una variable, PowerShell puede determinar automáticamente el tipo de variable, pero esto no siempre funciona bien y correctamente. Recientemente, enfrentamos un problema: el cmdlet de PowerShell devuelve un número en una variable de Cadena tipo. Por tanto, no podemos compararla con otra variable de tipo Entero. En este artículo, veremos cómo establecer el tipo de una variable de PowerShell y convertir un valor de cadena en un número entero.

Por ejemplo, creemos una variable simple y verifiquemos su tipo usando el método GetType ():

$a = 1

$a.GetType()

PowerShell asignó automáticamente el tipo Int32 (Entero) a esta variable.

$b = "1"

$b.GetType()

Si establece el valor de una variable entre comillas, PowerShell asume que es una cadena y devuelve un tipo de cadena para ella.

Puede especificar tanto el tipo de la variable como el tipo del valor. Los siguientes comandos crearán una variable que contiene un valor numérico:

[int]$number = 1

$number.GetType().FullName

$number1 = [int]1

$number1.GetType().FullName

cadena powershell a int

Pista. Otros tipos de datos populares en PowerShell:

  • [string]

  • [char] — código de carácter ASCII

  • [bool] – «Verdadero o falso»;

  • [int] — número de 32 bits;

  • [long] — número de 64 bits;

  • [decimal] — un número de coma flotante de 128 bits y ad al final;

  • [double] — número de punto flotante de 8 bits;

  • [single] — número de punto flotante de 32 bits;

  • [DateTime] — Fecha y hora de almacenamiento del tipo de datos Powershell;

  • [array] — Matriz de PowerShell;

  • [hashtable] – tabla de picadillo;

  • [pscustomonject] — una matriz de clave de tipo y valor.

Si intenta asignar un valor de cadena a una variable numérica o intenta realizar otra operación numérica, obtendrá un error:

[int]$number="Test"

No se puede convertir el valor «Prueba» para escribir «System.Int32». Error: «La cadena de entrada no tenía el formato correcto». ArgumentTransformationMetadataExceptionArgumentTransformationMetadataException

convertir cadena a int powershell

Pista. Además, puede enfrentar este error al intentar concatenar un valor entero con una cadena.

Digamos que tiene una variable que contiene una cadena (tipo Sistema.Cadena):

$stringN = “777”

$stringN.GetType().FullName

La forma más fácil de convertir un valor a System.Int32 es asignar su valor a una nueva variable con un tipo de datos declarado:

$integerN = [int]$stringN

O:

$integerN = [int]::Parse($stringN)

También puede usar el operador -as:

$integerN1 = $stringN -as[int]

O convierta el tipo de datos utilizando el método ToInt32 de la clase Convert (el segundo argumento de la clase Toint32 especifica el sistema numérico):

$integerN2 =[convert]::ToInt32($stringN)

También puede usar los métodos de la clase System.Convert para convertir a varios tipos de datos de PowerShell. Se puede mostrar una lista completa de conversiones de tipos de datos disponibles de la siguiente manera:

[System.Convert] | Get-Member -Static|select name

powershell convertir a int

Nota. Aprenda a usar la directiva de grupo para administrar, agregar, modificar, importar y eliminar claves de registro.

Como puede ver, los métodos de la clase System.Convert le permiten convertir un valor no solo a Int32, sino también a otros tipos de datos enteros:

  • Int16 — Entero de 16 bits con signo (corto);
  • Int64 — Entero de 64 bits con signo (largo);
  • UInt32: entero de 32 bits sin signo (uint);
  • UInt64 — Entero de 64 bits sin signo (ulong);
  • Etc.

powershell convertir cadena a número

Para convertir una cadena en un valor Int32, ejecute el siguiente comando:

[System.Convert]::ToInt32($stringN)

El método de conversión también le permite convertir datos numéricos a diferentes sistemas numéricos.

Se utiliza esta sintaxis:

[Convert]::ToInt32(value, notation)

Por ejemplo, desea convertir un valor de formato de cadena binaria a entero. En este caso, debe especificar 2 como segundo parámetro del método (la notación de número decimal se usa de forma predeterminada, por lo que se puede omitir 10):

$a="100"

[System.Convert]::ToInt32($a,2)

Cualquiera de estos métodos convierte la variable String al tipo System.Int32.

Comprobar la entrada de enteros en los scripts de PowerShell

En algunos casos, cuando obtiene el valor de una variable del usuario o de cualquier otra fuente, debe verificar si la entrada es un valor entero. Puede usar la siguiente función de PowerShell para validar la entrada de números enteros en los scripts de PowerShell. Esta función toma un valor como entrada y verifica si corresponde al tipo de datos Integer32 (después de la conversión)

Function IsInteger ([string]$vInteger)

{

    Try

    {

        $null = [convert]::ToInt32($vInteger)

        return $True

    }

    Catch

    {

        return $False

    }

}

Puede verificar la corrección de la función en los datos de prueba:

IsInteger("one")

IsInteger("23.2")

IsInteger(100)

IsInteger("100")

cadena powershell a número

Valora este artculo post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *