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