about_Split

Descripción breve

Explica cómo usar el operador Split para dividir una o varias cadenas en subcadenas.

Descripción larga

El operador Split divide una o varias cadenas en subcadenas. Puede cambiar los siguientes elementos de la operación Split:

  • Delimitador. El valor predeterminado es el espacio en blanco, pero puede especificar caracteres, cadenas, patrones o bloques de script que especifican el delimitador. El operador Split de PowerShell usa una expresión regular en el delimitador, en lugar de un carácter simple.
  • Número máximo de subcadenas. El valor predeterminado es devolver todas las subcadenas. Si 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 coincide 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 . Incluya solo los valores de parámetro. Los valores deben aparecer en el orden especificado en el diagrama de sintaxis.

-Split <String>
-Split (<String[]>)
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]

Puede sustituir -iSplit o -cSplit por -split en cualquier instrucción Split binaria (una instrucción Split que incluya un delimitador o un bloque de script). Los -iSplit operadores y -split no distinguen mayúsculas de minúsculas. El -cSplit operador distingue mayúsculas de minúsculas, lo que significa que el caso se considera cuando se aplican las reglas de delimitador.

Parámetros

<String> o <String[]>

Especifica una o varias cadenas que se van a dividir. Si envía varias cadenas, todas las cadenas se dividen mediante las mismas reglas de delimitador.

Ejemplo:

-split "red yellow blue green"
red
yellow
blue
green

<Delimitador>

Caracteres que identifican el final de una subcadena. El delimitador predeterminado es un espacio en blanco, incluidos espacios y caracteres no imprimibles, como nueva línea ('n) y tabulación ('t). Cuando se dividen las cadenas, se omite el delimitador de todas las subcadenas. Ejemplo:

"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address

De forma predeterminada, el delimitador se omite de los resultados. Para conservar todo o parte del delimitador, incluya entre paréntesis la parte que desea conservar. Si se agrega el <Max-substrings> parámetro , tiene prioridad cuando el comando divide la colección. Si opta por incluir un delimitador como parte de la salida, el comando devuelve el delimitador como parte de la salida; Sin embargo, dividir la cadena para devolver el delimitador como parte de la salida no cuenta como una división.

Ejemplos:

"Lastname:FirstName:Address" -split "(:)"
Lastname
:
FirstName
:
Address

"Lastname/:/FirstName/:/Address" -split "/(:)/"
Lastname
:
FirstName
:
Address

<Max-substrings>

Especifica el número máximo de subcadenas devueltas por la operación de división. El valor predeterminado es todas las subcadenas divididas por el delimitador. Si hay más subcadenas, se concatenan a la subcadena final. Si hay menos subcadenas, se devuelven todas las subcadenas. Un valor de 0 devuelve todas las subcadenas.

Ejemplo:

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", 5
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune

Si envía más de una cadena (una matriz de cadenas) al -split operador , el Max-substrings límite se aplica a cada cadena por separado.

$c = 'a,b,c','1,2,3,4,5'
$c -split ',', 3

a
b
c
1
2
3,4,5

<Max-substrings> no especifica el número máximo de objetos que se devuelven. En el ejemplo siguiente, <Max-substrings> se establece en 3. Esto da como resultado tres valores de subcadena, pero un total de cinco cadenas en la salida resultante. El delimitador se incluye después de las divisiones hasta que se alcanza el máximo de tres subcadenas. Los delimitadores adicionales de la subcadena final se convierten en parte de la subcadena.

'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3
Chocolate
-
Vanilla
-
Strawberry-Blueberry

Los valores negativos devuelven la cantidad de subcadenas solicitadas a partir del final de la cadena de entrada.

Nota:

Se ha agregado compatibilidad con valores negativos en PowerShell 7.

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", -5
Mercury,Venus,Earth,Mars
Jupiter
Saturn
Uranus
Neptune

<ScriptBlock>

Expresión que especifica reglas para aplicar el delimitador. La expresión debe evaluarse como $true o $false. Incluya el bloque de script entre llaves.

Ejemplo:

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split {$_ -eq "e" -or $_ -eq "p"}
M
rcury,V
nus,
arth,Mars,Ju
it
r,Saturn,Uranus,N

tun

<Opciones>

Incluya el nombre de la opción entre comillas. Las opciones solo son válidas cuando se usa el <parámetro Max-substrings> en la instrucción .

La sintaxis del parámetro Options es:

"SimpleMatch [,IgnoreCase]"

"[RegexMatch] [,IgnoreCase] [,CultureInvariant]
[,IgnorePatternWhitespace] [,ExplicitCapture]
[,Singleline | ,Multiline]"

Las opciones de SimpleMatch son:

  • SimpleMatch: use una comparación de cadenas sencilla 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 especifica el operador -cSplit.

Las opciones RegexMatch son:

  • RegexMatch: use 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 especifica el operador -cSplit.
  • CultureInvariant: omite las diferencias culturales en el lenguaje al evaluar el delimitador. Válido solo con RegexMatch.
  • IgnorePatternWhitespace: omite los comentarios y espacios en blanco sin escape marcados con el signo de número (#). Válido solo con RegexMatch.
  • Multilínea: el modo multilínea fuerza ^ y $ para que coincida con el final inicial de cada línea en lugar del principio y el final de la cadena de entrada.
  • Singleline: el modo singleline trata la cadena de entrada como SingleLine. Obliga al . carácter a que coincida con cada carácter (incluidas las nuevas líneas), en lugar de coincidir con cada carácter EXCEPTO la nueva línea \n.
  • ExplicitCapture: omite los grupos de coincidencias no con nombre para que solo se devuelvan grupos de captura explícitos en la lista de resultados. Válido solo con RegexMatch.

OPERADORES DE DIVISIÓN UNARIO Y BINARIO

El operador de división unario (-split <string>) tiene mayor prioridad que una coma. Como resultado, si envía una lista separada por comas de cadenas al operador de división unario, solo se divide la primera cadena (antes de la primera coma).

Use uno de los siguientes patrones para dividir más de una cadena:

  • Usar el operador de división binaria (<string[]> -split <delimitador>)
  • Encierra todas las cadenas entre paréntesis
  • Almacene las cadenas en una variable y, a continuación, envíe la variable al operador split.

Considere el ejemplo siguiente:

PS> -split "1 2", "a b"
1
2
a b
PS> "1 2", "a b" -split " "
1
2
a
b
PS> -split ("1 2", "a b")
1
2
a
b
PS> $a = "1 2", "a b"
PS> -split $a
1
2
a
b

Ejemplos

La siguiente instrucción divide la cadena en el espacio en blanco.

-split "Windows PowerShell 2.0`nWindows PowerShell with remoting"

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

La siguiente instrucción divide la cadena en cualquier coma.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

La siguiente instrucción divide la cadena en el patrón "er".

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune

La siguiente instrucción realiza una división con distinción entre mayúsculas y minúsculas en la letra "N".

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
eptune

La siguiente instrucción divide la cadena en "e" y "t".

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[et]'
M
rcury,V
nus,
ar
h,Mars,Jupi

r,Sa
urn,Uranus,N
p
un

La siguiente instrucción divide la cadena en "e" y "r", pero limita las subcadenas resultantes a seis subcadenas.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
M

cu
y,V
nus,
arth,Mars,Jupiter,Saturn,Uranus,Neptune

La siguiente instrucción divide una cadena en tres subcadenas.

"a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h

La siguiente instrucción divide una cadena en tres subcadenas a partir del final de la cadena.

"a,b,c,d,e,f,g,h" -split ",", -3
a,b,c,d,e,f
g
h

La siguiente instrucción divide dos cadenas en tres subcadenas. (El límite se aplica a cada cadena de forma independiente).

"a,b,c,d", "e,f,g,h" -split ",", 3
a
b
c,d
e
f
g,h

La siguiente instrucción divide cada línea de la cadena aquí en el primer dígito. Usa la opción Multiline para reconocer el principio de cada línea y cadena.

El 0 representa el valor "devolver todo" del parámetro Max-substrings. Puede usar opciones, como Multiline, solo cuando se especifica el valor Max-substrings.

$a = @'
1The first line.
2The second line.
3The third of three lines.
'@
$a -split "^\d", 0, "multiline"

The first line.

The second line.

The third of three lines.

La siguiente instrucción usa el carácter de barra diagonal inversa para escapar del delimitador de puntos (.).

Con el valor predeterminado, RegexMatch, el punto entre comillas (".") se interpreta para que coincida con cualquier carácter excepto para un carácter de nueva línea. Como resultado, la instrucción Split devuelve una línea en blanco para cada carácter excepto la nueva línea.

"This.is.a.test" -split "\."
This
is
a
test

La siguiente instrucción usa la opción SimpleMatch para dirigir el operador -split para interpretar literalmente el delimitador de punto (.).

El 0 representa el valor "devolver todo" del parámetro Max-substrings. Puede usar opciones, como SimpleMatch, solo cuando se especifica el valor Max-substrings.

"This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test

La siguiente instrucción divide la cadena en uno de dos delimitadores, según el valor de una variable.

$i = 1
$c = "LastName, FirstName; Address, City, State, Zip"
$c -split $(if ($i -lt 1) {","} else {";"})
LastName, FirstName
 Address, City, State, Zip

Consulte también