Поделиться через


about_Split

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

РАЗДЕЛ

about_Split

КРАТКОЕ ОПИСАНИЕ

В этом разделе объясняется, как использовать оператор Split для разбиения одной или нескольких строк на подстроки.

ПОДРОБНОЕ ОПИСАНИЕ

Оператор Split разделяет одну или несколько строк на подстроки. Вы можете изменить следующие элементы операции разделения:

  • -- Разделитесь. Значение по умолчанию — пробел, но можно указать любые символы, строки, шаблоны или блоки скриптов, которые определяют разделитель. Оператор Split в Windows PowerShell® использует регулярное выражение в разделителе вместо простого символа.

  • -- Максимальное число подстрок. По умолчанию возвращаются все подстроки. Если указать значение меньше количества подстрок, оставшиеся подстроки объединяются в последней подстроке.

  • -- Параметры, задающие условия, в которых сопоставляется разделитель, например SimpleMatch и Multiline.

СИНТАКСИС

На схеме ниже показан синтаксис оператора -split.

Имена параметров не отображаются в команде. Включайте только значения параметров. Значения должны отображаться в порядке, указанном на синтаксической диаграмме.

-Split <String>

<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]

<String> -Split {<ScriptBlock>} [,<Max-substrings>]

Вы можете заменить -iSplit или -cSplit на -split в любом двоичном операторе Split (это оператор Split, включающий разделитель или блок скрипта). Операторы - iSplit и -split не учитывают регистр. Оператор -cSplit учитывает регистр, то есть регистр учитывается при применении правил разделителя.

ПАРАМЕТРЫ

  • <Строка>
    Задает одну или несколько разделяемых строк. Если отправить несколько строк, все они разделяются с помощью одних правил разделителя. Пример:

              -split "red yellow blue green"
              red
              yellow
              blue
              green
    
  • <Delimiter>
    Символы, определяющие конец подстроки. Разделитель по умолчанию — это пробел и непечатные символы, например символ новой строки ('n) и табуляции ('t). Когда строки разбиваются, разделитель исключается из всех подстрок. Пример:

              "Lastname:FirstName:Address" -split ":"
              Lastname
              FirstName
              Address
    

    По умолчанию разделитель исключается из результатов. Чтобы сохранить весь разделитель или его часть, заключите в скобки часть, которую требуется сохранить. Если добавить параметр <Max-substrings>, он имеет больший приоритет, когда команда разбивает коллекцию. Если вы решили включить разделитель в выходные данные, команда возвращает разделитель. Однако разделение строки для возврата разделителя в выходных данных не считается разбиением. Примеры:

              "Lastname:FirstName:Address" -split "(:)"
              Lastname
              :
              FirstName
              :
              Address    
    
    
              "Lastname/:/FirstName/:/Address" -split "/(:)/"
              Lastname
              :
              FirstName
              :    
              Address
    

    В следующем примере параметр <Max-substrings> равен трем. Это приводит к трем разделениям, но выходные данные будут содержать в общем пять строк. Разделитель включается после разбиений, пока не будет достигнуто максимальное значение (три подстроки). Дополнительные разделители в окончательный подстроке становятся частью подстроки.

             'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3;
    
             Chocolate
             -
             Vanilla
             -
             Strawberry-Blueberry
    
  • <Max-substrings>
    Указывает максимальное количество попыток разбиения строки. Значение по умолчанию — все подстрок будут разделены. При наличии нескольких подстрок они объединяются в последней подстроке. Если подстрок меньше, возвращаются все подстроки. Значение 0 и отрицательные значения возвращают все подстроки.

    Параметр Max-substrings не указывает максимальное число возвращаемых объектов. Его значение равно максимальному количеству разбиений строки. Если отправить более одной строки (массив строк) оператору Split, ограничение Max-substrings применяется к каждой строке отдельно. Пример:

              $c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
              $c -split ",", 5
              Mercury
              Venus
              Earth
              Mars
              Jupiter,Saturn,Uranus,Neptune
    
  • <ScriptBlock>
    Выражение, задающее правила для применения разделителя. Выражение должно возвращать значение $true или $false. Заключите блок скрипта в фигурные скобки. Пример:

                $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
    
  • <Параметры>
    Заключите имя параметра в кавычки. Параметры допустимы, только если в операторе используется параметр <Max-substrings>.

    Для параметра Options используется следующий синтаксис:

        "SimpleMatch [,IgnoreCase]"
    
                "[RegexMatch] [,IgnoreCase] [,CultureInvariant]
                [,IgnorePatternWhitespace] [,ExplicitCapture] 
                [,Singleline | ,Multiline]"
    

    Параметры SimpleMatch:

    • -- SimpleMatch: При вычислении разделителя используется простое строковое сравнение. Этот параметр не может использоваться вместе с RegexMatch.

    • -- IgnoreCase: Принудительное сопоставления без учета регистра, даже если указан оператор -cSplit.

    Параметры RegexMatch:

    1. -- RegexMatch: Для вычисления разделителя используется регулярное выражение. Это поведение по умолчанию. Этот параметр не может использоваться вместе с SimpleMatch.

    2. -- IgnoreCase: Принудительное сопоставления без учета регистра, даже если указан оператор -cSplit.

    3. -- CultureInvariant: Игнорирует культурные различия в языке при вычислении разделителя. Доступно только при использовании RegexMatch.

    4. -- IgnorePatternWhitespace: Игнорирует пробелы без escape-последовательности и комментарии, помеченные знаком номера (#). Доступно только при использовании RegexMatch.

    5. -- Multiline: Многострочный режим распознает начало и конец строк, а также строчных значений. Доступно только при использовании RegexMatch. Значение по умолчанию — Singleline.

    6. -- Singleline: Однострочный режим распознает только начало и конец строки. Доступно только при использовании RegexMatch. Значение по умолчанию — Singleline.

    7. -- ExplicitCapture: Игнорирует неименованные группы соответствия, чтобы возвращать в списке результатов только явные группы записи. Доступно только при использовании RegexMatch.

УНАРНЫЙ И ДВОИЧНЫЙ ОПЕРАТОР SPLIT

Унарный оператор split (-split <string>) имеет более высокий приоритет, чем запятая. Поэтому если предоставить список перечисленных через запятую строк унарному оператору split, разделяется только первая строка (до первой запятой).

Для разделения нескольких строк используйте двоичный оператор split (<string> -split <разделитель>). Заключите все строки в круглые скобки или сохраните их в переменной, а затем отправьте переменную оператору split.

Рассмотрим следующий пример.

        -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

ПРИМЕРЫ

Следующий оператор разбивает строку в месте пробела.

        C:\PS> -split "Windows PowerShell 2.0`nWindows PowerShell with remoting"

        Windows
        PowerShell
        2.0
        Windows
        PowerShell
        with
        remoting

Следующий оператор разбивает строку на любой запятой.

        C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','

        Mercury
        Venus
        Earth 
        Mars
        Jupiter
        Saturn
        Uranus
        Neptune

Следующий оператор разбивает строку на шаблоне "er".

        C:\PS>"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'

        M
        cury,Venus,Earth,Mars,Jupit
        ,Saturn,Uranus,Neptune

Следующий оператор выполняет разбиение с учетом регистра на букве "N".

        C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'

        Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
        eptune

Следующий оператор разбивает строку на букве "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

Следующий оператор разбивает строку на букве "e" и "r", но ограничивает результирующие подстроки шестью подстроками.

        C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6

        M

        cu
        y,V
        nus,
        arth,Mars,Jupiter,Saturn,Uranus,Neptune

Следующий оператор разбивает строку на три подстроки.

        C:\PS> "a,b,c,d,e,f,g,h" -split ",", 3

        a
        b
        c,d,e,f,g,h

Следующий оператор разбивает две строки на три подстроки. (Ограничение применяется к каждой строке независимо друг от друга.)

        C:\PS> "a,b,c,d", "e,f,g,h" -split ",", 3

        a
        b
        c,d
        e
        f
        g,h

Следующий оператор разбивает каждую строку с первой цифры. Он использует параметр Multiline для определения начала каждой строки и строчного значения.

0 представляет значение "вернуть все" параметра Max-substrings. Вы можете использовать параметры, такие как Multiline, только если указано значение 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.

Следующий оператор использует параметр SimpleMatch, чтобы оператор -split буквально интерпретировал разделитель-точку (.).

С параметром по умолчанию, RegexMatch, точка, заключенная в кавычки ("."), интерпретируется как соответствие любому символу, кроме символа новой строки. В результате оператор Split возвращает пустую строку для каждого символа, за исключением новой строки.

0 представляет значение "вернуть все" параметра Max-substrings. Вы можете использовать параметры, такие как SimpleMatch, только если указано значение Max-substrings.

        C:\PS> "This.is.a.test" -split ".", 0, "simplematch"

        This
        is
        a 
        test

Следующий оператор разбивает строку на одном из двух разделители в зависимости от значения переменной.

        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

Следующие операторы split разделяют XML-файл, сначала на угловой скобке, а затем на точке с запятой. Результатом будет читаемая версия 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 ";"

Чтобы показать результат, введите "$x".

        C:\PS> $x

        @{__NounName=Process
        Name=PowerShell
        Handles=428
        VM=150081536
        WS=34840576
        PM=36253696
        ...

СМ. ТАКЖЕ

Split-Path

about_Operators

about_Comparison_Operators

about_Join