ARGOMENTO
about_Split
DESCRIZIONE BREVE
Illustra come utilizzare l'operatore split per suddividere una o
più stringhe in sottostringhe.
DESCRIZIONE DETTAGLIATA
L'operatore split suddivide una o più stringhe in sottostringhe.
È possibile modificare gli elementi seguenti dell'operazione di
suddivisione:
-- Delimitatore. L'impostazione predefinita è uno spazio vuoto, ma è
possibile specificare caratteri, stringhe, modelli o blocchi di
script che specificano il delimitatore.
-- Numero massimo di sottostringhe. Per impostazione predefinita
vengono restituite tutte le sottostringhe. Se si specifica un
numero minore del numero di sottostringhe, le sottostringhe
rimanenti vengono concatenate nell'ultima sottostringa.
-- Opzioni che specificano le condizioni alle quali viene identificato il
delimitatore, ad esempio SimpleMatch e Multiline.
SINTASSI
Nel diagramma seguente viene riportata la sintassi dell'operatore
-split:
I nomi dei parametri non appaiono nel comando. Sono inclusi solo i
valori dei parametri. I valori devono essere riportati nell'ordine
specificato nel diagramma di sintassi.
-Split <String>
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]
In qualsiasi istruzione split, è possibile sostituire -split con
-iSplit o -cSplit .
Gli operatori -iSplit e -split non fanno distinzione tra maiuscole
e minuscole. L'operatore -cSplit fa distinzione tra maiuscole e
minuscole, viene pertanto rilevata la differenza tra maiuscole e
minuscole quando sono applicate le regole del delimitatore.
PARAMETRI
<String>
Specifica una o più stringhe da suddividere. Se si inviano
più stringhe, tutte le stringhe sono suddivise utilizzando le
stesse regole del delimitatore.
Esempio:
-split "red yellow blue green"
red
yellow
blue
green
<Delimiter>
Caratteri che identificano la fine di una sottostringa. Il
delimitatore predefinito è uno spazio vuoto, inclusi spazi e
caratteri non stampabili quali caratteri di avanzamento riga
(`n) e tabulazione (`t). Quando le stringhe vengono
suddivise, il delimitatore è omesso da tutte le
sottostringhe. Esempio:
"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address
<Max-substrings>
Specifica il numero massimo di sottostringhe restituite . Per
impostazione predefinita, tutte le sottostringhe vengono
suddivise dal delimitatore. Se vi sono più sottostringhe,
vengono concatenate nella sottostringa finale. Se ci sono
meno sottostringhe, vengono restituite tutte le
sottostringhe. Un valore di 0 e valori negativi restituisce
tutte le sottostringhe.
Se si inviano più stringhe (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 regole per l'applicazione del
delimitatore. L'espressione deve essere valutata come $true o
$false. Racchiudere il blocco di script block tra parentesi
graffe. Esempio:
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptu
ne" $c -split {$_ -eq "e" -or $_ -eq "p"}
M
rcury,V
nus,Earth,Mars,Ju
it
r,Saturn,Uranus,N
tun
<Options>
Racchiudere tra virgolette il nome dell'opzione. Le opzioni
sono valide solo quando nell'istruzione è utilizzato il
parametro <Max-substrings>.
La sintassi per il parametro Options è la seguente:
"SimpleMatch [,IgnoreCase]"
"[RegexMatch] [,IgnoreCase] [,CultureInvariant]
[,IgnorePatternWhitespace] [,ExplicitCapture]
[,Singleline | ,Multiline]"
Le opzioni per SimpleMatch sono le seguenti:
-- SimpleMatch: utilizzare il confronto tra stringhe
semplice quando si valuta il delimitatore. Non può
essere utilizzato con RegexMatch.
-- IgnoreCase: forza la corrispondenza senza distinzione
tra maiuscole e minuscole, anche se è specificato
l'operatore -cSplit.
Le opzioni di RegexMatch sono le seguenti:
-- RegexMatch: utilizzare la corrispondenza di espressioni
regolari quando si valuta il delimitatore. Si tratta del
comportamento predefinito. Non può essere utilizzato con
SimpleMatch.
-- IgnoreCase: forza la corrispondenza senza distinzione
tra maiuscole e minuscole, anche se è specificato
l'operatore -cSplit.
-- CultureInvariant: ignora le differenze di cultura nel
linguaggio quando valuta il delimitatore. Valido solo
con RegexMatch.
-- IgnorePatternWhitespace: ignora gli spazi vuoti senza
carattere di escape e i commenti contrassegnati con il
simbolo cancelletto (#). Valido solo con RegexMatch.
-- Multiline: la modalità Multiline riconosce l'inizio e la
fine di righe e stringhe. Valido solo con RegexMatch. La
modalità predefinita è Singleline.
-- Singleline: la modalità Singleline riconosce solo
l'inizio e la fine delle stringhe. Valido solo con
RegexMatch. La modalità predefinita è Singleline.
-- ExplicitCapture: ignora i gruppi di corrispondenza non
denominati in modo che vengano restituiti nell'elenco
dei risultati solo i gruppi di acquisizione espliciti.
Valido solo con RegexMatch.
OPERATORI SPLIT UNARI E BINARI
L'operatore split unario (-split <string>) ha la priorità più
elevata di una
virgola. Pertanto, se si invia un elenco di stringhe separato da
virgole all'operatore split unario, viene suddivisa solo la prima
stringa (prima della prima virgola).
Per suddividere più stringhe, utilizzare l'operatore split
binario (<string> -split <delimiter>). Racchiudere tutte le
stringhe tra parentesi
oppure archiviare le stringhe in una variabile e inviare la
variabile all'operatore split.
Si consideri 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 suddivide 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 suddivide la stringa in corrispondenza di
ogni virgola.
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
L'istruzione seguente suddivide la stringa in corrispondenza del modello "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 suddivisione 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 suddivide 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 suddivide la stringa in corrispondenza di
"e" ed "r" ma limita il risultato a sei sottostringhe.
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 suddivide 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 suddivide due stringhe in tre sottostringhe
(il limite è 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. Utilizza l'opzione Multiline
per riconoscere l'inizio di ogni riga e stringa.
0 rappresenta il valore "return all" del parametro Max-substrings.
È possibile utilizzare opzioni, quali 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 utilizza 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 in modo da individuare
qualsiasi carattere ad eccezione di un carattere di avanzamento
riga. Pertanto, l'istruzione split restituisce una riga vuota per
ogni carattere ad eccezione del carattere di avanzamento riga.
0 rappresenta il valore "return all" del parametro Max-substrings.
È possibile utilizzare opzioni, quali SimpleMatch, solo quando è
specificato il valore Max-substrings.
C:\PS> "This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test
L'istruzione seguente suddivide la stringa in corrispondenza di
uno dei due delimitatori, in base al 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 suddividono un file XML prima in
corrispondenza della parentesi angolare e quindi in
corrispondenza 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