about_Split

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TÓPICO

about_Split

DESCRIÇÃO BREVE

Explica como usar o operador Split para dividir um ou mais cadeias de caracteres em subcadeias de caracteres.

DESCRIÇÃO LONGA

O operador Split divide uma ou mais cadeias de caracteres em subcadeias de caracteres. Você pode alterar os seguintes elementos da operação Split:

  • -- Delimitador. O padrão é o espaço em branco, mas você pode especificar caracteres, cadeias de caracteres, padrões ou blocos de script que especificam o delimitador. O operador Split do Windows PowerShell® usa uma expressão regular no delimitador, em vez de um caractere simples.

  • -- Número máximo de subcadeias de caracteres. O padrão é retornar todas as subcadeias de caracteres. Se você especificar um número menor que o número de subcadeias de caracteres, as subcadeias restantes serão concatenadas na última subcadeia de caracteres.

  • -- Opções que especificam as condições sob as quais o delimitador é correspondido, como SimpleMatch e Multiline.

SINTAXE

O diagrama a seguir mostra a sintaxe do operador -split.

Os nomes de parâmetros não aparecem no comando. Inclua somente os valores de parâmetro. Os valores devem aparecer na ordem especificada no diagrama de sintaxe.

-Split <String>

<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]

<String> -Split {<ScriptBlock>} [,<Max-substrings>]

Você pode substituir -iSplit ou -cSplit por -split em qualquer instrução Split binária (uma instrução Split que inclui um bloco de delimitador ou script). Os operadores -iSplit e -split diferenciam maiúsculas de minúsculas. O operador -cSplit diferencia maiúsculas de minúsculas, o que significa que esse caso é considerado quando são aplicadas as regras do delimitador.

PARÂMETROS

  • <Cadeia de caracteres>
    Especifica uma ou mais cadeias de caracteres para divisão. Se você enviar várias cadeias de caracteres, todas elas serão divididas usando as mesmas regras do delimitador. Exemplo:

              -split "red yellow blue green"
              red
              yellow
              blue
              green
    
  • <parâmetro>
    Os caracteres que identificam o final de uma subcadeia de caracteres. O delimitador padrão é o espaço em branco, incluindo espaços e caracteres não imprimíveis, como nova linha (`n) e guia (`t). Quando as cadeias de caracteres são divididas, o delimitador é omitido das subcadeias de caracteres. Exemplo:

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

    Por padrão, o delimitador é omitido dos resultados. Para preservar todo o delimitador ou parte dele, coloque entre parênteses a parte que deseja preservar. Se o parâmetro <Max-substrings> for adicionado, isso terá precedência quando seu comando dividir a coleção. Se você optar por incluir um delimitador como parte da saída, o comando retorna o delimitador como parte dela. No entanto, dividir a cadeia de caracteres para retornar o delimitador como parte da saída não conta como uma divisão. .Exemplos:

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

    No exemplo a seguir, <Max-substrings> é configurado como 3. Isso resulta em três divisões dos valores das cadeias de caracteres, mas em um total de cinco cadeias de caracteres na saída resultante; o delimitador é incluído após as divisões, até que seja atingido o número máximo de três subcadeias de caracteres. Os delimitadores adicionais contidos na subcadeia de caracteres final tornam-se parte dela.

             'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3;
    
             Chocolate
             -
             Vanilla
             -
             Strawberry-Blueberry
    
  • <Max-substrings>
    Especifica o número máximo de vezes que uma cadeia de caracteres é dividida. O padrão é que todas as subcadeias de caracteres sejam divididas pelo delimitador. Se houver mais subcadeias de caracteres, elas serão concatenados na subcadeia de caracteres final. Se houver menos subcadeias de caracteres, todas elas serão retornadas. Um valor de 0 e valores negativos retornam todas as subcadeias de caracteres.

    Max-substrings não especifica o número máximo de objetos que são retornados; seu valor é igual ao número máximo de vezes que uma cadeia de caracteres é dividida. Se você enviar mais de uma cadeia de caracteres (uma matriz de cadeias de caracteres) ao operador Split, o limite Max-substrings será aplicado separadamente a cada cadeia de caracteres. Exemplo:

              $c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
              $c -split ",", 5
              Mercury
              Venus
              Earth
              Mars
              Jupiter,Saturn,Uranus,Neptune
    
  • <ScriptBlock>
    Uma expressão que especifica regras para aplicar o delimitador. A expressão deve ser avaliada como $true ou $false. Coloque o bloco de script entre chaves. Exemplo:

                $c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
              $c -split {$_ -eq "e" -or $_ -eq "p"}
              M
              rcury,V
              nus,Earth,Mars,Ju
              it
              r,Saturn,Uranus,N
    
              tun
    
  • <Opções>
    Coloque o nome da opção entre aspas. As opções somente são válidas quando o parâmetro <Max-substrings> for usado na instrução.

    A sintaxe para o parâmetro Options é:

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

    As opções de SimpleMatch são:

    • -- SimpleMatch: usa a comparação simples de cadeia de caracteres ao avaliar o delimitador. Não pode ser usada com RegexMatch.

    • -- IgnoreCase: força a correspondência sem diferenciação de maiúsculas de minúsculas, mesmo se o operador -cSplit estiver especificado.

    As opções de RegexMatch são:

    1. -- RegexMatch: Usa a correspondência regular de expressões para avaliar o delimitador. Esse é o comportamento padrão. Não pode ser usada com SimpleMatch.

    2. -- IgnoreCase: força a correspondência sem diferenciação de maiúsculas de minúsculas, mesmo se o operador -cSplit estiver especificado.

    3. -- CultureInvariant: ignora as diferenças culturais no idioma ao avaliar o delimitador. Válida somente com RegexMatch.

    4. -- IgnorePatternWhitespace: ignora o espaço em branco sem escape e os comentários marcados com o sinal de número (#). Válida somente com RegexMatch.

    5. -- Multiline: o modo de várias linhas reconhece o início e o fim das linhas e cadeias de caracteres. Válida somente com RegexMatch. Singleline é o padrão.

    6. -- Singleline: o modo de linha única reconhece apenas o início e o fim das cadeias de caracteres. Válida somente com RegexMatch. Singleline é o padrão.

    7. -- ExplicitCapture: ignora os grupos de correspondência não nomeados para que somente os grupos de captura explícitos sejam retornados na lista de resultados. Válida somente com RegexMatch.

OPERADORES SPLIT UNÁRIOS E BINÁRIOS

O operador Split unário (-split <cadeia de caracteres>) tem mais precedência que uma vírgula. Como resultado, se você enviar uma lista separada por vírgulas de cadeias de caracteres para o operador Split unário, somente a primeira cadeia de caracteres (antes da primeira vírgula) será dividida.

Para dividir mais de uma cadeia de caracteres, use o operador Split binário (<cadeia de caracteres> -split <delimitador>). Coloque as cadeias de caracteres entre parênteses ou armazene-as em uma variável e, em seguida, envie a variável ao operador Split.

Considere o exemplo a seguir:

        -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

EXEMPLOS

A instrução a seguir divide a cadeia de caracteres no espaço em branco.

        C:\PS> -split "Windows PowerShell 2.0`nWindows PowerShell with remoting"

        Windows
        PowerShell
        2.0
        Windows
        PowerShell
        with
        remoting

A instrução a seguir divide a cadeia de caracteres em qualquer vírgula.

        C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','

        Mercury
        Venus
        Earth 
        Mars
        Jupiter
        Saturn
        Uranus
        Neptune

A instrução a seguir divide a cadeia de caracteres no padrão "er".

        C:\PS>"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'

        M
        cury,Venus,Earth,Mars,Jupit
        ,Saturn,Uranus,Neptune

A instrução a seguir executa uma divisão que diferencia maiúsculas de minúsculas na letra "N".

        C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'

        Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
        eptune

A instrução a seguir divide a cadeia de caracteres em "e" e "t".

        C:\PS> "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

A instrução a seguir divide a cadeia de caracteres em "e" e "r", mas limita o número de subcadeias de caracteres resultantes para seis.

        C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6

        M

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

A instrução a seguir divide uma cadeia de caracteres em três subcadeias de caracteres.

        C:\PS> "a,b,c,d,e,f,g,h" -split ",", 3

        a
        b
        c,d,e,f,g,h

A instrução a seguir divide duas cadeia de caracteres em três subcadeias de caracteres. (O limite é aplicado a cada cadeia de caracteres independentemente.)

        C:\PS> "a,b,c,d", "e,f,g,h" -split ",", 3

        a
        b
        c,d
        e
        f
        g,h

A instrução a seguir divide cada linha na cadeia de caracteres here no primeiro dígito. Ela usa a opção Multiline para reconhecer o início de cada linha e cadeia de caracteres.

O 0 representa o valor "return all" do parâmetro Max-substrings. Você somente pode usar as opções, como Multiline, quando o valor de Max-substrings for especificado.

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


        The second line.


        The third of three lines.

A instrução a seguir usa a opção SimpleMatch direcionar o operador -split para interpretar literalmente o delimitador de ponto (.).

Com o padrão, RegexMatch, o ponto entre aspas (".") é interpretado para corresponder a qualquer caractere, exceto um caractere de nova linha. Como resultado, a instrução Split retorna uma linha em branco para cada caractere, exceto a nova linha.

O 0 representa o valor "return all" do parâmetro Max-substrings. Você somente pode usar as opções, como SimpleMatch, quando o valor de Max-substrings for especificado.

        C:\PS> "This.is.a.test" -split ".", 0, "simplematch"

        This
        is
        a 
        test

A instrução a seguir divide a cadeia de caracteres em um de dois delimitadores, dependendo do valor de uma variável.

        C:\PS> $i = 1
        C:\PS> $c = "LastName, FirstName; Address, City, State, Zip"
        C:\PS> $c -split {if ($i -lt 1) {$_ -eq ","} else {$_ -eq ";"}}

        LastName, FirstName
         Address, City, State, Zip

As instruções Split a seguir dividem um arquivo XML primeiro no colchete angular e, depois, no ponto e vírgula. O resultado é uma versão legível do arquivo 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 exibir o resultado, digite "$x".

        C:\PS> $x

        @{__NounName=Process
        Name=PowerShell
        Handles=428
        VM=150081536
        WS=34840576
        PM=36253696
        ...

CONSULTE TAMBÉM

Split-Path

about_Operators

about_Comparison_Operators

about_Join