about_Split
Aggiornamento: agosto 2012
Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0
ARGOMENTO
about_Split
DESCRIZIONE BREVE
Illustra come usare l'operatore Split per dividere una o più stringhe in sottostringhe.
DESCRIZIONE LUNGA
L'operatore Split divide una o più stringhe in sottostringhe. È possibile cambiare gli elementi seguenti dell'operazione Split:
-- Delimitatore. Il delimitatore predefinito è lo spazio vuoto, ma è possibile definire caratteri, stringhe, modelli o blocchi di script che specificano il delimitatore. L'operatore Split in Windows PowerShell® usa un'espressione regolare nel delimitatore anziché un carattere semplice.
-- Numero massimo di sottostringhe. L'impostazione predefinita prevede che vengano restituite tutte le sottostringhe. Se si specifica un numero inferiore rispetto al numero di sottostringhe, quelle rimanenti vengono concatenate nell'ultima sottostringa.
-- Opzioni che specificano le condizioni di corrispondenza per il delimitatore, ad esempio SimpleMatch e Multiline.
SINTASSI
Il diagramma illustra la sintassi per l'operatore -split.
I nomi dei parametri non vengono visualizzati nel comando. Includere solo i valori dei parametri. I valori devono essere visualizzati nell'ordine specificato nel diagramma della sintassi.
-Split <String>
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]
È possibile sostituire -iSplit o -cSplit a -split in qualsiasi istruzione Split binaria (un'istruzione Split che include un delimitatore o blocco di script). Gli operatori -iSplit e -split non fanno distinzione tra maiuscole e minuscole. Per l'operatore -cSplit, la distinzione tra maiuscole e minuscole è rilevante, ovvero viene considerata quando vengono applicate le regole del delimitatore.
PARAMETRI
<Stringa>
Specifica una o più stringhe da dividere. Se si inviano più stringhe, verranno divise tutte usando le stesse regole del delimitatore. Esempio:-split "red yellow blue green" red yellow blue green
<Delimiter>
I caratteri che identificano la fine di una sottostringa. Il delimitatore predefinito è uno spazio vuoto, inclusi gli spazi e i caratteri non stampabili, ad esempio nuova riga (`n) e tabulazione (`t). Quando le stringhe vengono divise, il delimitatore viene omesso da tutte le sottostringhe. Esempio:"Lastname:FirstName:Address" -split ":" Lastname FirstName Address
Per impostazione predefinita, il delimitatore viene omesso nei risultati. Per mantenere tutto o parte del delimitatore, racchiudere tra parentesi la parte da mantenere. Se si aggiunge il parametro <Max-substrings>, questo ha la precedenza quando il comando suddivide la raccolta. Se si decide di includere un delimitatore come parte dell'output, il comando restituisce il delimitatore come parte dell'output. La divisione della stringa per restituire il delimitatore come parte dell'output, tuttavia, non viene considerata una divisione. .Esempi:
"Lastname:FirstName:Address" -split "(:)" Lastname : FirstName : Address "Lastname/:/FirstName/:/Address" -split "/(:)/" Lastname : FirstName : Address
Nell'esempio seguente <Max-substrings> è impostato su 3. Questo determina tre divisioni dei valori di stringa, ma un totale di cinque stringhe nell'output risultante; il delimitatore viene incluso dopo le divisioni, fino al raggiungimento del massimo di tre sottostringhe. Altri delimitatori nella sottostringa finale diventano parte della sottostringa.
'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3; Chocolate - Vanilla - Strawberry-Blueberry
<Max-substrings>
Specifica il numero massimo di volte in cui una stringa viene divisa. Per impostazione predefinita, tutte le sottostringhe sono divise dal delimitatore. Se sono presenti più sottostringhe, vengono concatenate tutte alla sottostringa finale. Se sono presenti meno sottostringhe, vengono restituite tutte le sottostringhe. Il valore 0 e i valori negativi restituiscono tutte le sottostringhe.Max-substrings non specifica il numero massimo di oggetti restituiti; il suo valore corrisponde al numero massimo di volte in cui una stringa viene divisa. Se si invia più di una stringa (una matrice di stringhe) all'operatore Split, il limite Max-substrings viene applicato separatamente a ogni stringa. Esempio:
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" $c -split ",", 5 Mercury Venus Earth Mars Jupiter,Saturn,Uranus,Neptune
<ScriptBlock>
Espressione che specifica le regole per l'applicazione del delimitatore. L'espressione deve restituire $true o $false. Racchiudere il blocco di script tra parentesi graffe. Esempio:$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
<Opzioni>
Racchiudere tra virgolette il nome dell'opzione. Le opzioni sono valide solo quando nell'istruzione viene usato il parametro <Max-substrings>.La sintassi per il parametro Options è:
"SimpleMatch [,IgnoreCase]" "[RegexMatch] [,IgnoreCase] [,CultureInvariant] [,IgnorePatternWhitespace] [,ExplicitCapture] [,Singleline | ,Multiline]"
Le opzioni SimpleMatch sono:
-- SimpleMatch: usare il confronto di stringhe semplice per valutare il delimitatore. Non può essere usata con RegexMatch.
-- IgnoreCase: forza la ricerca di corrispondenze con distinzione tra maiuscole e minuscole, anche se è specificato l'operatore -cSplit.
Le opzioni RegexMatch sono:
-- RegexMatch: usare la corrispondenza di espressioni regolari per valutare il delimitatore. Si tratta del comportamento predefinito. Non può essere usata con SimpleMatch.
-- IgnoreCase: forza la ricerca di corrispondenze con distinzione tra maiuscole e minuscole, anche se è specificato l'operatore -cSplit.
-- CultureInvariant: ignora la differenze di impostazioni cultura nella lingua durante la valutazione del delimitatore. Valida solo con RegexMatch.
-- IgnorePatternWhitespace: ignora gli spazi vuoti senza escape e i commenti contrassegnati con il cancelletto (#). Valida solo con RegexMatch.
-- Multiline: la modalità Multiline riconosce l'inizio e la fine delle righe e delle stringhe. Valida solo con RegexMatch. Singleline è l'impostazione predefinita.
-- Singleline: la modalità Singleline riconosce solo l'inizio e la fine delle stringhe. Valida solo con RegexMatch. Singleline è l'impostazione predefinita.
-- ExplicitCapture: ignora i gruppi di corrispondenza senza nome per fare in modo che nell'elenco dei risultati vengano restituiti solo i gruppi di acquisizione esplicita. Valida solo con RegexMatch.
OPERATORI SPLIT UNARI E BINARI
L'operatore split unario (-split <stringa>) ha una precedenza maggiore rispetto alla virgola. Di conseguenza, se si invia un elenco di stringhe delimitato da virgole all'operatore split unario, viene divisa solo la prima stringa (prima della prima virgola).
Per dividere più stringhe, usare l'operatore split binario (<stringa> -split <delimitatore>). Racchiudere tutte le stringhe tra parentesi o archiviare le stringhe in una variabile e quindi inviare la variabile all'operatore split.
Considerare l'esempio seguente:
-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
ESEMPI
L'istruzione seguente divide la stringa in corrispondenza dello spazio vuoto.
C:\PS> -split "Windows PowerShell 2.0`nWindows PowerShell with remoting"
Windows
PowerShell
2.0
Windows
PowerShell
with
remoting
L'istruzione seguente divide la stringa in corrispondenza di una virgola.
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
L'istruzione seguente divide la stringa in corrispondenza della sequenza "er".
C:\PS>"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune
L'istruzione seguente esegue una divisione con distinzione tra maiuscole e minuscole in corrispondenza della lettera "N".
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
eptune
L'istruzione seguente divide la stringa in corrispondenza di "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
L'istruzione seguente divide la stringa in corrispondenza di "e" e "r", ma limita le sottostringhe risultanti a sei.
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
M
cu
y,V
nus,
arth,Mars,Jupiter,Saturn,Uranus,Neptune
L'istruzione seguente divide una stringa in tre sottostringhe.
C:\PS> "a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h
L'istruzione seguente divide due stringhe in tre sottostringhe. Il limite viene applicato a ogni stringa in modo indipendente.
C:\PS> "a,b,c,d", "e,f,g,h" -split ",", 3
a
b
c,d
e
f
g,h
L'istruzione seguente suddivide ogni riga nella stringa here in corrispondenza della prima cifra. Usa l'opzione Multiline per riconoscere l'inizio di ogni riga e stringa.
0 rappresenta il valore "return all" del parametro Max-substrings. È possibile usare opzioni, ad esempio Multiline, solo quando è specificato il valore Max-substrings.
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.
L'istruzione seguente usa l'opzione SimpleMatch per indicare all'operatore -split di interpretare letteralmente il delimitatore punto (.).
Con l'impostazione predefinita, RegexMatch, il punto racchiuso tra virgolette (".") viene interpretato come corrispondente a qualsiasi carattere tranne un carattere di nuova riga. Di conseguenza, l'istruzione Split restituisce una riga vuota per ogni carattere eccetto il carattere di nuova riga.
0 rappresenta il valore "return all" del parametro Max-substrings. È possibile usare opzioni, ad esempio SimpleMatch, solo quando è specificato il valore Max-substrings.
C:\PS> "This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test
L'istruzione seguente divide la stringa in corrispondenza di uno di due delimitatori, a seconda del valore di una variabile.
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
Le istruzioni split seguenti dividono un file XML prima in corrispondenza della parentesi acuta e poi del punto e virgola (;). Il risultato è una versione leggibile del file 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 ";"
Per visualizzare il risultato, digitare "$x".
C:\PS> $x
@{__NounName=Process
Name=PowerShell
Handles=428
VM=150081536
WS=34840576
PM=36253696
...
VEDERE ANCHE
Split-Path
about_Operators
about_Comparison_Operators
about_Join