TÓPICO about_Split DESCRIÇÃO RESUMIDA Explica como usar o operador de divisão para dividir uma ou mais cadeias de caracteres em subcadeias de caracteres. DESCRIÇÃO LONGA O operador de divisão divide uma ou mais cadeias de caracteres em subcadeias de caracteres. Você pode alterar os seguintes elementos da operação de divisão: -- Delimitador. O padrão é um espaço em branco, mas você pode especificar caracteres, cadeias de caracteres, padrões ou blocos de script que especifiquem o delimitador. -- Número máximo de subcadeias de caracteres. O padrão é retornar todas as subcadeias de caracteres. Se você especificar um número menor do que o de subcadeias de caracteres, as subcadeias restantes serão concatenadas na última. -- Opções que especificam as condições nas quais ocorre a correspondência de delimitador, 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 apenas os valores de parâmetros. Os valores devem aparecer na ordem especificada no diagrama de sintaxe. -Split <String> <String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]] <String> -Split {<ScriptBlock>} [,<Max-substrings>] Em qualquer instrução de divisão, você pode substituir -iSplit ou -cSplit por -split. Os operadores -iSplit e -split não diferenciam maiúsculas de minúsculas. O operador -cSplit diferencia maiúsculas de minúsculas, ou seja, o uso de maiúsculas e minúsculas é levado em conta quando as regras do delimitador são aplicadas. PARÂMETROS <String> Especifica uma ou mais cadeias de caracteres para divisão. Se você enviar várias cadeias de caracteres, todas serão divididas usando as mesmas regras de delimitador. Exemplo: -split "vermelho amarelo azul verde" vermelho amarelo azul verde <Delimiter> Os caracteres que identificam o término de uma subcadeia de caracteres. O delimitador padrão é um espaço em branco, o que inclui espaços e caracteres não-imprimíveis, como nova linha (`n) e tabulação (`t). Quando as cadeias de caracteres são divididas, o delimitador é omitido de todas as subcadeias. Exemplo: "Sobrenome:Nome:Endereço" -split ":" Sobrenome Nome Endereço <Max-substrings> Especifica o número máximo de subcadeias de caracteres retornadas. O padrão é retornar todas as subcadeias divididas pelo delimitador. Se houver mais subcadeias, elas serão concatenadas à subcadeia final. Se houver menos subcadeias, todas serão retornadas. Um valor 0 e valores negativos retornam todas as subcadeias. Se você enviar mais de uma cadeia de caracteres (uma matriz de cadeias de caracteres) ao operador de divisão, o limite máximo de subcadeias será aplicado separadamente a cada cadeia de caracteres. Exemplo: $c = "Mercúrio,Vênus,Terra,Marte,Júpiter,Saturno,Urano,Netuno" $c -split ",", 5 Mercúrio Vênus Terra Marte Júpiter,Saturno,Urano,Netuno <ScriptBlock> Uma expressão que especifica as regras de aplicação do delimitador. A expressão deve ser avaliada como $true ou $false. Coloque o bloco de script entre chaves. Exemplo: $c = "Mercúrio,Vênus,Terra,Marte,Júpiter,Saturno,Urano,Net uno" $c -split {$_ -eq "e" -or $_ -eq "p"} M rcúrio,Vênus,T rra, Mart ,Jú iter,Saturno,Urano,N tuno <Options> Inclua o nome da opção entre aspas. As opções serão válidas somente quando o parâmetro <Max-substrings> for usado na instrução. A sintaxe do parâmetro de opções é: "SimpleMatch [,IgnoreCase]" "[RegexMatch] [,IgnoreCase] [,CultureInvariant] [,IgnorePatternWhitespace] [,ExplicitCapture] [,Singleline | ,Multiline]" As opções de SimpleMatch são: -- SimpleMatch: usa a comparação simples entre cadeias de caracteres ao avaliar o delimitador. Não pode ser usado com RegexMatch. -- IgnoreCase: força a correspondência sem diferenciar maiúsculas de minúsculas, mesmo que o operador -cSplit seja especificado. As opções de RegexMatch são: -- RegexMatch: usa a correspondência entre expressões regulares para avaliar o delimitador. Esse é o comportamento padrão. Não pode ser usado com SimpleMatch. -- IgnoreCase: força a correspondência sem diferenciar maiúsculas de minúsculas, mesmo que o operador -cSplit seja especificado. -- CultureInvariant: ignora diferenças culturais de idioma ao avaliar o delimitador. Válido somente com RegexMatch. -- IgnorePatternWhitespace: ignora espaços em branco sem escape e comentários marcados com o sinal de número (#). Válido somente com RegexMatch. -- Multiline: o modo Multiline reconhece o início e o término de linhas e cadeias de caracteres. Válido somente com RegexMatch. Singleline é o padrão. -- Singleline: o modo Singleline reconhece somente o início e o término de cadeias de caracteres. Válido somente com RegexMatch. Singleline é o padrão. -- ExplicitCapture: ignora grupos de correspondência não nomeados, de forma que só grupos de captura explícitos sejam retornados na lista de resultados. Válido somente com RegexMatch. OPERADORES DE DIVISÃO UNÁRIOS E BINÁRIOS O operador de divisão unário (-split <string>) tem precedência sobre a vírgula. Como resultado, se você enviar uma lista de cadeias de caracteres separada por vírgulas ao operador de divisão unário, só a primeira cadeia de caracteres (antes da primeira vírgula) será dividida. Para dividir mais de uma cadeia de caracteres, use o operador de divisão binário (<string> -split <delimiter>). Coloque todas as cadeias de caracteres entre parêntesesou armazene-as em uma variável, e depois envie a variável ao operador de divisão. Considere o exemplo abaixo: -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 comunicação remota" Windows PowerShell 2.0 Windows PowerShell comunicação remota A instrução a seguir divide a cadeia de caracteres em qualquer vírgula. C:\PS> "Mercúrio,Vênus,Terra,Marte,Júpiter,Saturno,Urano,Netuno" -split ',' Mercúrio Vênus Terra Marte Júpiter Saturno Urano Netuno A instrução a seguir divide a cadeia de caracteres no padrão "er". C:\PS> "Mercúrio,Vênus,Terra,Marte,Júpiter,Saturno,Urano,Netuno" -split 'er' M cúrio,Vênus,Terra,Marte,Júpit ,Saturno,Urano,Netuno A instrução a seguir executa uma divisão diferenciando maiúsculas de minúsculas na letra "N". C:\PS> "Mercúrio,Vênus,Terra,Marte,Júpiter,Saturno,Urano,Netuno" -cSplit 'N' Mercúrio,Vênus,Terra,Marte,Júpiter,Saturno,Urano, etuno A instrução a seguir divide a cadeia de caracteres em "e" e "t". C:\PS> "Mercúrio,Vênus,Terra,Marte,Júpiter,Saturno,Urano,Netuno" -split '[et]' M rcúrio,V nus, rra,Mar ,Júpi r,Sa urno,Urano,N uno A instrução a seguir divide a cadeia de caracteres em "e" e "r", mas limita as subcadeias resultantes a seis. C:\PS> "Mercúrio,Vênus,Terra,Marte,Júpiter,Saturno,Urano,Netuno" -split '[er]', 6 M cú io,V nus,T rra,Marte,Júpiter,Saturno,Urano,Netuno A instrução a seguir divide uma cadeia de caracteres em três subcadeias. 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 cadeias de caracteres em três subcadeias (o limite é aplicado independentemente a cada cadeia 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 cada linha da 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 zero representa o valor "retornar todas" do parâmetro "Max-substrings". Você só poderá usar opções, como Multiline, quando o valor máximo de subcadeias for especificado. C:\PS> $a = @' 1A primeira linha. 2A segunda linha. 3A terceira de três linhas. '@ C:\PS> $a -split "^\d", 0, "multiline" A primeira linha. A segunda linha. A terceira de três linhas. A instrução a seguir usa a opção SimpleMatch para direcionar o operador -split a interpretar o delimitador de ponto (.) literalmente. Com o padrão, RegexMatch, o ponto entre aspas (".") é interpretado para corresponder a qualquer caractere, com exceção de um caractere de nova linha. Como resultado, a instrução de divisão retorna uma linha em branco para todos os caracteres, menos o de nova linha. O zero representa o valor "retornar todas" do parâmetro "Max-substrings". Você só poderá usar opções, como SimpleMatch, quando o valor máximo de subcadeias for especificado. C:\PS> "Isto.é.um.teste" -split ".", 0, "simplematch" Isto é um teste 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 = "Sobrenome, Nome; Endereço, Cidade, Estado, CEP" C:\PS> $c -split {if ($i -lt 1) {$_ -eq ","} else {$_ -eq ";"}} Sobrenome, Nome Endereço, Cidade, Estado, CEP As instruções de divisão 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