HOWTO · PowerShell
Divida una cadena en variables separadas en PowerShell
Este tutorial presentará la división de una cadena en variables separadas en PowerShell.
En esta página
Para asignar partes de una cadena a variables separadas en PowerShell, divida la cadena en una matriz y asigne los elementos que necesite. Use el método String.Split() para delimitadores literales y el operador -split cuando el delimitador deba ser una expresión regular.
Los ejemplos siguientes muestran los valores que produce cada asignación.
Dividir una cadena con el método String.Split()
String.Split() es un método de las cadenas. Si no se especifica un separador, divide el texto en los espacios en blanco. El valor devuelto es una matriz, así que puede usar índices para asignar sus partes a variables con nombre. El primer elemento está en el índice 0.
Ejecute este ejemplo:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
$text = "Hello World"
$parts = $text.Split()
$first = $parts[0]
$second = $parts[1]
$first
$second
$record = "North|East|West"
$limitedParts = $record.Split([char[]]@('|'), 2)
$region = $limitedParts[0]
$remaining = $limitedParts[1]
$region
$remaining
El primer par de variables recibe Hello y World. La sobrecarga que acepta una matriz de caracteres y un recuento permite elegir un delimitador literal y limitar el número de partes devueltas. En el segundo ejemplo, la barra vertical es el delimitador y el recuento es dos; por eso, $region recibe el texto anterior a la primera barra y $remaining recibe todo lo que viene después, incluidas las barras posteriores. El delimitador se elimina de las partes devueltas.
Pase una matriz de caracteres si quiere dividir la cadena por cualquiera de varios caracteres literales. Por ejemplo, Split([char[]]@(',', ';')) usa la coma o el punto y coma como separador. Si los separadores consecutivos son relevantes para sus datos, compruebe cómo gestiona la sobrecarga elegida las partes adyacentes resultantes y, si es necesario, elija explícitamente un valor de StringSplitOptions. Este método resulta útil cuando los delimitadores son caracteres literales y se necesitan las sobrecargas de .NET para especificar separadores, opciones o un número máximo de partes.
Dividir una cadena con el operador -split
El operador -split es una alternativa concisa que usa una expresión regular como delimitador. Así, resulta práctico dividir por un patrón, como uno o más caracteres de espacio en blanco (\s+) o cualquier carácter de un conjunto. Al igual que con el método, el resultado es una matriz que se puede asignar a variables separadas. El límite opcional controla el número máximo de partes; el texto posterior a la última división permitida queda en la última parte.
Ejecute este ejemplo:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
$fruitLine = "apple,banana;cherry|date"
$firstFruit, $remainingFruit = $fruitLine -split '[,;|]', 2
$firstFruit
$remainingFruit
En este caso, la clase de caracteres [,;|] coincide con una coma, un punto y coma o una barra vertical. La primera variable recibe apple; la segunda recibe banana;cherry|date porque el recuento de divisiones es dos. A diferencia de String.Split(), -split interpreta el delimitador como una expresión regular, así que debe escapar los metacaracteres de expresiones regulares cuando quiera buscarlos literalmente.
Use -match para comprobar si una cadena coincide con un patrón o para capturar grupos coincidentes. Este operador no divide una cadena en las coincidencias del delimitador; para eso, use -split. Elija String.Split() para separadores literales y opciones propias de sus sobrecargas, y -split para patrones de delimitador basados en expresiones regulares. En ambos casos, asigne los elementos de la matriz devuelta a variables con nombre si otros comandos necesitan usar cada valor por separado.