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




Tabla de contenido