РАЗДЕЛ
    about_Split

КРАТКОЕ ОПИСАНИЕ
    Описание использования оператора split для разбивки одной или 
    нескольких строк на подстроки. 

ПОЛНОЕ ОПИСАНИЕ
    Оператор split используется для разбивки одной или нескольких 
    строк на подстроки. Можно изменять следующие элементы операции split.
	
	-- Разделитель. По умолчанию в качестве разделителя используется 
	   пробел, однако можно указать и символы, строки, шаблоны или блоки 
	   скриптов, задающие разделитель.
	
	-- Максимальное количество подстрок. По умолчанию выводятся все 
	   подстроки. Если задано число меньше числа подстрок, оставшиеся 
	   подстроки объединяются в последнюю подстроку. 

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


  СИНТАКСИС

   В следующей схеме показан синтаксис использования оператора -split.

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

	-Split <String>

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

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

   В любой команде split можно заменять на -iSplit или -cSplit для -split.
   В операторах -iSplit и -split регистр не учитывается. В операторе 
   -cSplit при применении правил разделения регистр учитывается.


  ПАРАМЕТРЫ

   <String>
        Задает одну или несколько строк для разбивки. При указании 
        нескольких строк все строки разбиваются по одним и тем же 
        правилам.
        Пример.

	    -split "red yellow blue green"
	    red
            yellow
	    blue
	    green

   <Delimiter>
        Символы, указывающие на конец подстроки. По умолчанию в 
        качестве разделителя используются пробелы с учетом 
        непечатаемых символов, например, символа новой строки (`n) и 
        символа табуляции (`t). При разбивке строк разделитель 
        исключается из всех подстрок. Пример.

	    "Lastname:FirstName:Address" -split ":"
	    Lastname
	    FirstName
	    Адрес
	
    <Max-substrings>
        Указывает максимальное количество выводимых подстрок. По 
        умолчанию это все подстроки, разделенные разделителем. Если 
        фактическое количество подстрок больше, они объединяются в 
        последней подстроке. Если фактическое количество подстрок 
        меньше, выводятся все подстроки. При выборе значения 0 и 
        отрицательных значений будут выведены все подстроки.

        Если в оператор 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

    <Options>
        Заключите имя параметра в кавычки. Параметры действуют только 
        при использовании в инструкции параметра <Max-substrings>.

        Синтаксис параметра Options:

	    "SimpleMatch [,IgnoreCase]"

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

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

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


        Параметры RegexMatch:

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

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

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

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

          -- Multiline: В многострочном режиме распознаются начало и 
             конец строк и выражений. Можно использовать только с 
             RegexMatch. По умолчанию используется однострочный режим 
             (Singleline).

          -- Singleline: в однострочном режиме распознаются только 
             начало и конец выражений. Можно использовать только с 
             RegexMatch. По умолчанию используется однострочный режим 
             (Singleline).

          -- ExplicitCapture: игнорирует группы сопоставлений без 
             имен, и в списке результатов выводятся только группы 
             явно именованных шаблонов. Можно использовать только с 
             RegexMatch.
	

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

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

    Чтобы разбить несколько строк, нужно использовать оператор 
    двоичной разбивки (<string> -split <delimiter>). Все строки 
    следует заключать в скобки или сохранять в переменной, 
    а затем отправлять в оператор 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


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

    0 означает значение return all (вернуть все) параметра 
    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 означает значение return all (вернуть все) параметра 
    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
		
	

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




Содержание