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