1.1K
Cuando trabaje con PowerShell, es posible que a menudo necesite combinar o concatenar cadenas. La concatenación es el proceso de combinar varias cadenas para crear una sola cadena. PowerShell proporciona varias opciones para concatenar cadenas, cada una con ventajas y casos de uso.
En esta publicación de blog, exploraremos diferentes técnicas de cadena de concatenación de PowerShell.
Expansión de cadenas
La expansión de cadenas es una forma sencilla e intuitiva de concatenar cadenas en PowerShell. Le permite incluir variables y expresiones dentro de cadenas entre comillas dobles. Cuando PowerShell encuentra una variable o expresión encerrada en pslo evalúa y lo reemplaza con su valor en la cadena resultante.
Este es un ejemplo de expansión de cadenas en PowerShell:
$firstName = "John"
$lastName = "Doe"
$fullName = "$firstName $lastName"
$fullName
En este ejemplo, la variable $ nombre completo se le asignará el valor concatenado de $primerNombre y $apellidoresultando en «John Doe».
La expansión de cadenas es una opción conveniente cuando necesita concatenar algunas cadenas o incluir variables dentro de una cadena más grande.
Algunos ejemplos más:
# Username
"$firstName.$lastName"
# Usre principal name or email address
"[email protected]"
Método String.Concat()
El Cadena.Concat() en PowerShell le permite concatenar varias cadenas pasándolas como argumentos separados al método. Este método de cadena de concatenación de PowerShell combina todas las cadenas de entrada y devuelve una nueva cadena, es decir, la concatenación de las entradas.
He aquí un ejemplo del uso de la Cadena.Concat() método:
$greeting = "Hello"
$name = "John"
$message = [String]::Concat($greeting, " ", $name)
En este ejemplo, el concat() método combina la $saludoun carácter de espacio, y el $nombre variables, resultando en “Hola John”.
El Cadena.Concat() El método es útil cuando tiene un número conocido de cadenas para concatenar y desea especificar cada cadena como un argumento de forma explícita.
Operador de concatenación de cadenas (+)
PowerShell admite la + Operador para la concatenación de cadenas. Este operador le permite combinar dos o más cadenas en una sola cadena. Tenga en cuenta que este operador de cadena de concatenación de PowerShell es una abreviatura del Cadena.Concat() método.
Este es un ejemplo del uso del operador de concatenación de cadenas:
$firstName = "John"
$lastName = "Doe"
$fullName = $firstName + " " + $lastName
$fullName
En este ejemplo, el + operador concatena el $primerNombreun carácter de espacio, y el $apellido variables, resultando en “Juan Pérez”.
El operador de concatenación de cadenas es un enfoque conciso y de uso común para concatenar cadenas en PowerShell.
Tenga cuidado al usar el + Operador de cadena de concatenación de PowerShell al concatenar cadenas y números porque también es un operador matemático (suma). No puede realizar sumas usando cadenas y números. Por ejemplo, ejecute el siguiente comando en PowerShell.
$age = 30
$age + " years old"
Este comando devuelve un error porque $edad es un valor numérico y PowerShell interpreta el + operador como una operación de suma en lugar de una concatenación de cadenas.
Lo mismo sucede incluso si no usa variables y especifica directamente el número así:
30 + " years old."
Entonces, ¿cómo podemos evitar este error? Puede especificar explícitamente el tipo de datos de la variable como una cadena de esta manera:
[string]$age = 30
O encierre el número entre comillas.
"30"
De cualquier manera, el objeto resultante es de un tipo de datos de cadena que puede verificar llamando al ObtenerTipo() método.
$age.GetType()
"30".GetType()
Entonces, cuando apliquemos esta técnica, obtendremos los resultados esperados sin errores.
[string]$age = 30
$age + " years old.""30" + " years old."
En resumen, cuando inicia una operación de cadena de concatenación de PowerShell con un número (es decir, número + cadena + cadena), la + El operador se interpreta como un operador matemático de suma.
Pero suponga que comienza la concatenación con un valor de cadena (es decir, cadena + número + cadena). En ese caso, cada elemento se considera automáticamente una cadena, y el + El operador se interpreta como un operador de concatenación de cadenas.
Publicación relacionada. PowerShell: convertir cadena a entero
Método String.Format()
El Cadena.Formato() El método de cadena de concatenación de PowerShell proporciona una forma flexible de concatenar cadenas en PowerShell al permitirle especificar marcadores de posición dentro de una cadena de formato y proporcionar los valores correspondientes.
He aquí un ejemplo del uso de la Cadena.Formato() método:
$firstName = "John"
$lastName = "Doe"
$fullName = [String]::Format("Full name: {0} {1}", $firstName, $lastName)
$fullname
En este ejemplo, la cadena de formato «Nombre completo: {0} {1}» contiene marcadores de posición {0} y {1} que se sustituyen por los valores de $primerNombre y $apellidorespectivamente.
El Cadena.Formato() El método es beneficioso al crear una cadena formateada con marcadores de posición para valores dinámicos.
Por ejemplo, vamos a crear un tabla de picadillo de frutas con sus colores correspondientes.
$fruits = [ordered]@{
Banana="yellow"
Avocado = 'green'
Apple="red"
Orange="orange"
}
Utilizando el Cadena.Formato() método y for loop, podemos mostrar estos valores en este formato «[fruit name] es [color name]”
for ($i = 0 ; $i -lt $fruits.Count; $i++ ) {
[String]::Format("{0} is {1}", $fruits.Keys[$i], $fruits.Values[$i])
}
Operador de formato de cadena (-f)
PowerShell proporciona la -F operador, también conocido como operador de formato, que le permite realizar el formateo y la concatenación de cadenas de forma concisa y legible.
Nota. El -F operador es una abreviatura de Cadena.Formato() método.
Aquí hay un ejemplo del uso del operador de formato:
$firstName = "John"
$lastName = "Doe"
$fullName = "Full name: {0} {1}" -f $firstName, $lastName
En este ejemplo, el operador de formato -F se aplica a la cadena “Nombre completo: {0} {1}”, y los valores de $primerNombre y $apellido se utilizan para reemplazar los marcadores de posición {0} y {1}.
El operador de formato es una forma elegante de concatenar cadenas y realizar formato en PowerShell. Como es una abreviatura de Cadena.Formato() método, también es excelente para mostrar valores dinámicos.
$fruits = [ordered]@{
Banana="yellow"
Avocado = 'green'
Apple="red"
Orange="orange"
}for ($i = 0 ; $i -lt $fruits.Count; $i++ ) {
"{0} is {1}" -f $fruits.Keys[$i], $fruits.Values[$i]
}
Método String.Join()
El Cadena.Unirse() El método de cadena de concatenación de PowerShell le permite concatenar una matriz de cadenas usando un separador específico. Se necesitan dos argumentos: la cadena separadora y una matriz de cadenas para concatenar.
He aquí un ejemplo del uso de la Cadena.Unirse() método:
$colors = "Red", "Green", "Blue"
$colorList = [String]::Join(", ", $colors)
En este ejemplo, el Unirse() método concatena las cadenas en el $colores array, separándolos con una coma y un espacio, resultando en “Rojo verde azul”.
El Cadena.Unirse() El método es útil cuando tiene una matriz de cadenas que desea concatenar con un separador específico.
Para otro ejemplo, obtengamos los primeros cinco servicios en la computadora y unamos sus Nombre para mostrar valores de propiedad con el “ | ” (espacio de barra espaciadora) caracteres.
$services = Get-Service | Select-Object -First 5
[String]::Join(" | ", $services)
Puedes lograr lo mismo con una sola línea. Esta vez, unámoslos con un carácter de nueva línea (`n)
[String]::Join("`n", $(Get-Service | Select-Object -First 3).DisplayName)
Operador de unión de cadenas (-join)
PowerShell también proporciona la -unirse operador, que le permite concatenar una matriz de cadenas sin especificar un separador explícitamente. El -unirse El operador une los elementos de una matriz en una sola cadena sin ningún delimitador.
Aquí hay un ejemplo del uso del operador de unión:
$colors = "Red", "Green", "Blue"
-join $colors
En este ejemplo, el -unirse El operador concatena las cadenas en el $colores matriz sin ningún separador, lo que da como resultado «Rojo verde azul”.
El operador de combinación es útil cuando desea concatenar cadenas en una matriz sin ningún separador entre ellas. Como, al crear nombres de archivo con una fecha.
$name = "backup_"
$now = Get-Date -Format "yyyy_MM_dd"
$ext = ".txt"
-join @($name, $now, $ext)
Pero este operador es una abreviatura del Cadena.Unirse() método, lo que significa que también puede especificar un delimitador. Para ello, debe mover el -unirse operador después de la matriz y seguido por el delimitador.
$colors = "Red", "Green", "Blue"
$colors -join ' > '
Conclusión
La concatenación de cadenas en PowerShell es una tarea común, y conocer los diversos métodos disponibles puede ayudarlo a elegir el enfoque más adecuado para sus requisitos específicos.
En esta publicación de blog, exploramos diferentes opciones para concatenar cadenas en PowerShell, incluida la expansión de cadenas, la Cadena.Concat() método, el operador de concatenación de cadenas, el Cadena.Formato() método, el operador de formato, el Cadena.Unirse() método y el operador de unión.
Cada método tiene sus fortalezas y casos de uso, por lo que es fundamental comprender sus diferencias y elegir el más apropiado para sus necesidades de secuencias de comandos de PowerShell.