Share via


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:

    1. -- RegexMatch: usare la corrispondenza di espressioni regolari per valutare il delimitatore. Si tratta del comportamento predefinito. Non può essere usata con SimpleMatch.

    2. -- IgnoreCase: forza la ricerca di corrispondenze con distinzione tra maiuscole e minuscole, anche se è specificato l'operatore -cSplit.

    3. -- CultureInvariant: ignora la differenze di impostazioni cultura nella lingua durante la valutazione del delimitatore. Valida solo con RegexMatch.

    4. -- IgnorePatternWhitespace: ignora gli spazi vuoti senza escape e i commenti contrassegnati con il cancelletto (#). Valida solo con RegexMatch.

    5. -- Multiline: la modalità Multiline riconosce l'inizio e la fine delle righe e delle stringhe. Valida solo con RegexMatch. Singleline è l'impostazione predefinita.

    6. -- Singleline: la modalità Singleline riconosce solo l'inizio e la fine delle stringhe. Valida solo con RegexMatch. Singleline è l'impostazione predefinita.

    7. -- 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