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