TEMA about_Split DESCRIPCIÓN BREVE Explica cómo usar el operador de división para dividir una o varias cadenas en subcadenas. DESCRIPCIÓN DETALLADA El operador de división divide una o varias cadenas en subcadenas. Se pueden cambiar los siguientes elementos de la operación de división: -- Delimitador. El delimitador predeterminado es un espacio en blanco, pero se pueden especificar los caracteres, cadenas, patrones o bloques de script que especifican el delimitador. -- Número máximo de subcadenas. De forma predeterminada, se devuelven todas las subcadenas. Si se especifica un número menor que el número de subcadenas, las subcadenas restantes se concatenan en la última subcadena. -- Opciones que especifican las condiciones en las que se evalúa el delimitador, como SimpleMatch y Multiline. SINTAXIS En el diagrama siguiente se muestra la sintaxis del operador -split. Los nombres de parámetro no aparecen en el comando. Se incluyen únicamente los valores de parámetro. Los valores deben aparecer en el orden especificado en el diagrama de la sintaxis. -Split <Cadena> <Cadena> -Split <Delimitador>[,<Número máximo de subcadenas>[,"<Opciones>"]] <Cadena> -Split {<Bloque de script>} [,<Número máximo de subcadenas>] En cualquier instrucción de división, se puede reemplazar -iSplit o -cSplit por -split. Los operadores -iSplit y -split no distinguen mayúsculas de minúsculas. El operador -cSplit distingue mayúsculas de minúsculas, lo que significa que se tiene en cuenta el uso de mayúsculas y minúsculas cuando se aplican las reglas referentes al delimitador. PARÁMETROS <Cadena> Especifica una o varias cadenas que se van a dividir. Si se envían varias cadenas, se dividen todas las cadenas aplicando las mismas reglas de delimitador. Ejemplo: -split "rojo amarillo azul verde" rojo amarillo azul verde <Delimitador> Son los caracteres que identifican el final de un subcadena. El delimitador predeterminado es un espacio en blanco, incluidos espacios y caracteres no imprimibles, como los de línea nueva (`n) y de tabulación (`t). Cuando se dividen las cadenas, se omite el delimitador de todas las subcadenas. Ejemplo: "Apellidos:Nombre:Dirección" -split ":" Apellidos Nombre Dirección <Número máximo de subcadenas> Especifica el número máximo de subcadenas que se van a devolver. De forma predeterminada, se devuelven todas las subcadenas divididas por el delimitador. Si hay más subcadenas, estas se concatenan en la última subcadena. Si hay menos subcadenas, se devuelven todas las subcadenas. El valor 0 y los valores negativos devuelven todas las subcadenas. Si se envía más de una cadena (matriz de cadenas) al operador de división, se aplica el límite del número máximo de subcadenas a cada cadena por separado. Ejemplo: $c = "Mercurio,Venus,Tierra,Marte,Júpiter,Saturno,Urano,Neptuno" $c -split ",", 5 Mercurio Venus Tierra Marte Júpiter,Saturno,Urano,Neptuno <Bloque de script> Es una expresión que especifica las reglas para aplicar el delimitador. La expresión debe evaluarse como $true o $false. El bloque de script debe escribirse entre llaves. Ejemplo: $c = "Mercurio,Venus,Júpiter,Saturno,Urano,Neptuno" $c -split {$_ -eq "e" -or $_ -eq "p"} M rcurio,V nus,Jú it r,Saturno,Urano,N tuno <Opciones> El nombre las opciones debe escribirse entre comillas. Las opciones son válidas únicamente cuando se usa el parámetro <Número máximo de subcadenas> en la instrucción. La sintaxis del parámetro Opciones es: "SimpleMatch [, IgnoreCase]" "[RegexMatch] [,IgnoreCase] [,CultureInvariant] [,IgnorePatternWhitespace] [,ExplicitCapture] [,Singleline | ,Multiline]" Las opciones SimpleMatch son: -- SimpleMatch: se usa la comparación de cadenas simples al evaluar el delimitador. No se puede usar con RegexMatch. -- IgnoreCase: fuerza la coincidencia sin distinción entre mayúsculas y minúsculas, incluso si se ha especificado el operador -cSplit. Las opciones RegexMatch son: -- RegexMatch: se usa la coincidencia de expresiones regulares para evaluar el delimitador. Este es el comportamiento predeterminado. No se puede usar con SimpleMatch. -- IgnoreCase: fuerza la coincidencia sin distinción entre mayúsculas y minúsculas, incluso si se ha especificado el operador -cSplit. -- CultureInvariant: se omiten las diferencias entre las referencias culturales de idioma al evaluar el delimitador. Esta opción es válida únicamente con RegexMatch. -- IgnorePatternWhitespace: se omiten los espacios en blanco sin carácter de escape y los comentarios marcados con el signo de número (#). Esta opción es válida únicamente con RegexMatch. -- Multiline: este modo reconoce el inicio y el final de las líneas y cadenas. Esta opción es válida únicamente con RegexMatch. El valor predeterminado es Singleline. -- Singleline: este modo reconoce solo el inicio y el final de las cadenas. Esta opción es válida únicamente con RegexMatch. El valor predeterminado es Singleline. -- ExplicitCapture: se omiten los grupos de coincidencias sin nombre de modo que solo se devuelvan en la lista de resultados los grupos de captura explícita. Esta opción es válida únicamente con RegexMatch. OPERADORES DE DIVISIÓN UNARIO y BINARIO El operador de división unario (-split <cadena>) tiene mayor precedencia que una coma. Como resultado, si se envía una lista de cadenas delimitadas por comas al operador de división unario, solo se divide la primera cadena (delante de la primera coma). Para dividir varias cadenas, use el operador de división binario (<cadena> -split <delimitador>). Todas las cadenas se deben escribir entre paréntesis,o bien, almacenar en una variable y, a continuación, enviar la variable al operador de división. Considere el ejemplo siguiente: -split "1 2", "a b" 1 2 a b "1 2", "a b" -split " " 1 2 a b -split ("1 2", "a b") 1 2 a b $a = "1 2", "a b" -split $a 1 2 a b EJEMPLOS La instrucción siguiente divide la cadena en el espacio en blanco. C:\PS> -split "Windows PowerShell 2.0`nWindows PowerShell a distancia" Windows PowerShell 2.0 Windows PowerShell a distancia La instrucción siguiente divide la cadena en cualquier coma. C:\PS> "Mercurio,Venus,Tierra,Marte,Júpiter,Saturno,Urano,Neptuno" -split ',' Mercurio Venus Tierra Marte Júpiter Saturno Urano Neptuno La instrucción siguiente divide la cadena en el patrón "er". C:\PS>"Mercurio,Venus,Marte,Júpiter,Saturno,Urano,Neptuno" -split 'er' M curio,Venus,Marte,Júpit ,Saturno,Urano,Neptuno La instrucción siguiente realiza una división con distinción entre mayúsculas y minúsculas en la letra "N". C:\PS> "Mercurio,Venus,Tierra,Marte,Júpiter,Saturno,Urano,Neptuno" -cSplit 'N' Mercurio,Venus,Tierra,Marte,Júpiter,Saturno,Urano, eptuno La instrucción siguiente divide la cadena en la "e" y la "t". C:\PS> "Mercurio,Venus,Tierra,Júpiter,Saturno,Urano,Neptuno" -split '[et]' M rcurio,V nus, i rra,Júpi r,Sa urno,Urano,N p uno La instrucción siguiente divide la cadena en la "e" y la "r", pero limita las subcadenas resultantes a seis subcadenas. C:\PS> "Mercurio,Venus,Marte,Júpiter,Saturno,Urano,Neptuno" -split '[er]', 6 M cu io,V nus,Ma te,Júpiter,Saturno,Urano,Neptuno La instrucción siguiente divide una cadena en tres subcadenas. C:\PS> "a,b,c,d,e,f,g,h" -split ",", 3 a b c,d,e,f,g,h La instrucción siguiente divide dos cadenas en tres subcadenas. (El límite se aplica a cada cadena por separado.) C:\PS> "a,b,c,d", "e,f,g,h" -split ",", 3 a b c,d e f g,h La instrucción siguiente divide cada línea de la cadena multilínea intercalada en el código en el primer dígito. Utiliza la opción Multiline para reconocer el inicio de cada línea y cadena. El 0 representa el valor "devolver todo" del parámetro Número máximo de subcadenas. Se pueden usar opciones, como Multiline, únicamente cuando se especifica el valor del parámetro Número máximo de subcadenas. C:\PS> $a = @' 1La primera línea. 2La segunda línea. 3La tercera de tres líneas. '@ C:\PS> $a -split "^\d", 0, "multiline" La primera línea. La segunda línea. La tercera de tres líneas. La instrucción siguiente utiliza la opción SimpleMatch para que el operador -split interprete literalmente el delimitador de punto (.) Con la opción predeterminada, RegexMatch, un punto entre comillas (".") se interpreta de modo que se busquen coincidencias con cualquier carácter salvo los caracteres de nueva línea. Como resultado, la instrucción de división devuelve una línea en blanco para cada carácter, excepto los caracteres de nueva línea. El 0 representa el valor "devolver todo" del parámetro Número máximo de subcadenas. Se pueden usar opciones, como SimpleMatch, únicamente cuando se especifica el valor del parámetro Número máximo de subcadenas. C:\PS> "Esta.es.una.prueba" -split ".", 0, "simplematch" Esta es una prueba La instrucción siguiente divide la cadena en uno de los dos delimitadores, según el valor de una variable. C:\PS> $i = 1 C:\PS> $c = "Apellidos, Nombre; Dirección, Ciudad, Estado, Código postal" C:\PS> $c -split {if ($i -lt 1) {$_ -eq ","} else {$_ -eq ";"}} Apellidos, Nombre Dirección, Ciudad, Estado, Código postal Las siguientes instrucciones de división dividen un archivo XML primero en el corchete angular y después en el signo de punto y coma. El resultado es una versión legible del archivo XML. C:\PS> get-process powershell | export-clixml ps.xml C:\PS> $x = import-clixml ps.xml C:\PS> $x = $x -split "<" C:\PS> $x = $x -split ";" Para mostrar el resultado, escriba "$x". C:\PS> $x @{__NounName=Process Name=powershell Handles=428 VM=150081536 WS=34840576 PM=36253696 ... VEA TAMBIÉN Split-Path about_Operators about_Comparison_Operators about_Join about_PowerShell_v2