about_Split
3par-powershell
activedirectory
activedirectory_filter
activedirectory_identity
activedirectory_objectmodel
activitycommonparameters
aliases
arithmetic_operators
arrays
assignment_operators
automatic_variables
beforeeach_aftereach
binshred
break
carbon
carbon_2.0
carbon_contributing
carbon_extended_type_data
carbon_installation
carbon_support
ceip
checkpoint-workflow
cimsession
classes
command_precedence
command_syntax
comment_based_help
commonparameters
comparison_operators
configuration
continue
core_commands
data_sections
debuggers
desiredstateconfiguration
do
document
environment_variables
escape_characters
eventlogs
execution_policies
for
foreach-parallel
foreach
format.ps1xml
functions
functions_advanced
functions_advanced_methods
functions_advanced_parameters
functions_cmdletbindingattribute
functions_outputtypeattribute
group_policy_settings
hash_tables
history
if
inlinescript
invalid_certificates
job_details
jobs
join
language_keywords
language_modes
line_editing
locations
logical_operators
methods
mocking
modules
object_creation
objects
obn
operator_precedence
operators
packagemanagement
parallel
parameters
parameters_default_values
parsing
parsing_loctest
path_syntax
pester
pipelines
plaster.help
plaster_creatingamanifest.help
platyps
plugins
poshrsjob
powercli_objects
powershell.exe
powershell_ise.exe
powershelllogging
preference_variables
profiles
prompts
properties
providers
psconsolehostreadline
pscribo
pscx
psreadline
psscriptanalyzer
pssession_details
pssessions
pssnapins
psversioncompare
quoting_rules
redirection
ref
regular_expressions
remote
remote_disconnected_sessions
remote_faq
remote_jobs
remote_output
remote_requirements
remote_troubleshooting
remote_variables
requires
reserved_words
return
run_with_powershell
runasync
scheduled_jobs
scheduled_jobs_advanced
scheduled_jobs_basics
scheduled_jobs_troubleshooting
scopes
script_blocks
script_internationalization
scripts
sequence
server_authentication
session_configuration_files
session_configurations
should
signing
spaccessserviceapp
spalternateurl
spantivirussettings
spappcatalog
spappdomain
spappmanagementserviceapp
spappstoresettings
spbcsserviceapp
spblobcachesettings
spcacheaccounts
spconfigwizard
spcontentdatabase
spcreatefarm
spdatabaseaag
spdesignersettings
spdiagnosticloggingsettings
spdistributedcacheservice
special_characters
spexcelserviceapp
spfarmadministrators
spfarmsolution
spfeature
sphealthanalyzerrulestate
spinstall
spinstalllanguagepack
spinstallprereqs
spirmsettings
spjoinfarm
splatting
split
spmanagedaccount
spmanagedmetadataserviceapp
spmanagedpath
spofficeonlineserverbinding
spoutgoingemailsettings
sppasswordchangesettings
spperformancepointserviceapp
spproductupdate
sppublishserviceapplication
spquotatemplate
spremotefarmtrust
spsearchcontentsource
spsearchcrawlrule
spsearchfiletype
spsearchindexpartition
spsearchresultsource
spsearchserviceapp
spsearchtopology
spsecurestoreserviceapp
spserviceapppool
spserviceappproxygroup
spserviceappsecurity
spserviceinstance
spsessionstateservice
spshelladmins
spsite
spstateserviceapp
spsubscriptionsettingsserviceapp
sptimerjobstate
sptrustedidentitytokenissuer
spusageapplication
spuserprofileproperty
spuserprofilesection
spuserprofileserviceapp
spuserprofileserviceapppermissions
spuserprofilesyncconnection
spuserprofilesyncservice
spvisioserviceapp
spweb
spwebappblockedfiletypes
spwebappgeneralsettings
spwebapplication
spwebapplicationappdomain
spwebapppermissions
spwebapppolicy
spwebappproxygroup
spwebappsiteuseanddeletion
spwebappthrottlingsettings
spwebappworkflowsettings
spwordautomationserviceapp
spworkmanagementserviceapp
suspend-workflow
switch
testdrive
throw
transactions
trap
try_catch_finally
type_operators
types.ps1xml
uid
updatable_help
variables
vimdatastore
while
wildcards
windows_powershell_5.0
windows_powershell_ise
windows_rt
wmi
wmi_cmdlets
workflowcommonparameters
workflows
wql
ws-management_cmdlets
activedirectory
activedirectory_filter
activedirectory_identity
activedirectory_objectmodel
activitycommonparameters
aliases
arithmetic_operators
arrays
assignment_operators
automatic_variables
beforeeach_aftereach
binshred
break
carbon
carbon_2.0
carbon_contributing
carbon_extended_type_data
carbon_installation
carbon_support
ceip
checkpoint-workflow
cimsession
classes
command_precedence
command_syntax
comment_based_help
commonparameters
comparison_operators
configuration
continue
core_commands
data_sections
debuggers
desiredstateconfiguration
do
document
environment_variables
escape_characters
eventlogs
execution_policies
for
foreach-parallel
foreach
format.ps1xml
functions
functions_advanced
functions_advanced_methods
functions_advanced_parameters
functions_cmdletbindingattribute
functions_outputtypeattribute
group_policy_settings
hash_tables
history
if
inlinescript
invalid_certificates
job_details
jobs
join
language_keywords
language_modes
line_editing
locations
logical_operators
methods
mocking
modules
object_creation
objects
obn
operator_precedence
operators
packagemanagement
parallel
parameters
parameters_default_values
parsing
parsing_loctest
path_syntax
pester
pipelines
plaster.help
plaster_creatingamanifest.help
platyps
plugins
poshrsjob
powercli_objects
powershell.exe
powershell_ise.exe
powershelllogging
preference_variables
profiles
prompts
properties
providers
psconsolehostreadline
pscribo
pscx
psreadline
psscriptanalyzer
pssession_details
pssessions
pssnapins
psversioncompare
quoting_rules
redirection
ref
regular_expressions
remote
remote_disconnected_sessions
remote_faq
remote_jobs
remote_output
remote_requirements
remote_troubleshooting
remote_variables
requires
reserved_words
return
run_with_powershell
runasync
scheduled_jobs
scheduled_jobs_advanced
scheduled_jobs_basics
scheduled_jobs_troubleshooting
scopes
script_blocks
script_internationalization
scripts
sequence
server_authentication
session_configuration_files
session_configurations
should
signing
spaccessserviceapp
spalternateurl
spantivirussettings
spappcatalog
spappdomain
spappmanagementserviceapp
spappstoresettings
spbcsserviceapp
spblobcachesettings
spcacheaccounts
spconfigwizard
spcontentdatabase
spcreatefarm
spdatabaseaag
spdesignersettings
spdiagnosticloggingsettings
spdistributedcacheservice
special_characters
spexcelserviceapp
spfarmadministrators
spfarmsolution
spfeature
sphealthanalyzerrulestate
spinstall
spinstalllanguagepack
spinstallprereqs
spirmsettings
spjoinfarm
splatting
split
spmanagedaccount
spmanagedmetadataserviceapp
spmanagedpath
spofficeonlineserverbinding
spoutgoingemailsettings
sppasswordchangesettings
spperformancepointserviceapp
spproductupdate
sppublishserviceapplication
spquotatemplate
spremotefarmtrust
spsearchcontentsource
spsearchcrawlrule
spsearchfiletype
spsearchindexpartition
spsearchresultsource
spsearchserviceapp
spsearchtopology
spsecurestoreserviceapp
spserviceapppool
spserviceappproxygroup
spserviceappsecurity
spserviceinstance
spsessionstateservice
spshelladmins
spsite
spstateserviceapp
spsubscriptionsettingsserviceapp
sptimerjobstate
sptrustedidentitytokenissuer
spusageapplication
spuserprofileproperty
spuserprofilesection
spuserprofileserviceapp
spuserprofileserviceapppermissions
spuserprofilesyncconnection
spuserprofilesyncservice
spvisioserviceapp
spweb
spwebappblockedfiletypes
spwebappgeneralsettings
spwebapplication
spwebapplicationappdomain
spwebapppermissions
spwebapppolicy
spwebappproxygroup
spwebappsiteuseanddeletion
spwebappthrottlingsettings
spwebappworkflowsettings
spwordautomationserviceapp
spworkmanagementserviceapp
suspend-workflow
switch
testdrive
throw
transactions
trap
try_catch_finally
type_operators
types.ps1xml
uid
updatable_help
variables
vimdatastore
while
wildcards
windows_powershell_5.0
windows_powershell_ise
windows_rt
wmi
wmi_cmdlets
workflowcommonparameters
workflows
wql
ws-management_cmdlets
Split
Microsoft.PowerShell.Core
about_Operators
about_Comparison_Operators
about_Join
SHORT DESCRIPTION
Explains how to use the Split operator to split one or more strings into
substrings.
LONG DESCRIPTION
The Split operator splits one or more strings into substrings. You can
change the following elements of the Split operation:
-- Delimiter. The default is whitespace, but you can specify characters,
strings, patterns, or script blocks that specify the delimiter. The
Split operator in Windows PowerShell uses a regular expression in
the delimiter, rather than a simple character.
-- Maximum number of substrings. The default is to return all substrings. If
you specify a number less than the number of substrings, the remaining
substrings are concatenated in the last substring.
-- Options that specify the conditions under which the delimiter is matched,
such as SimpleMatch and Multiline.
SYNTAX
The following diagram shows the syntax for the -split operator.
The parameter names do not appear in the command. Include only the
parameter values. The values must appear in the order specified in the
syntax diagram.
-Split <String>
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]
You can substitute -iSplit or -cSplit for -split in any binary Split statement
(a Split statement that includes a delimiter or script block). The -iSplit and
-split operators are case-insensitive. The -cSplit operator is case-sensitive,
meaning that case is considered when the delimiter rules are applied.
PARAMETERS
<String>
Specifies one or more strings to be split. If you submit multiple
strings, all the strings are split using the same delimiter rules.
Example:
-split "red yellow blue green"
red
yellow
blue
green
<Delimiter>
The characters that identify the end of a substring. The default
delimiter is whitespace, including spaces and non-printable characters, such
as newline (`n) and tab (`t). When the strings are split, the delimiter
is omitted from all the substrings. Example:
"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address
By default, the delimiter is omitted from the results. To preserve all or
part of the delimiter, enclose in parentheses the part that you want to
preserve. If the <Max-substrings> parameter is added, this takes precedence
when your command splits up the collection. If you opt to include a delimiter
as part of the output, the command returns the delimiter as part of the output;
however, splitting the string to return the delimiter as part of output does
not count as a split. .Examples:
"Lastname:FirstName:Address" -split "(:)"
Lastname
:
FirstName
:
Address
"Lastname/:/FirstName/:/Address" -split "/(:)/"
Lastname
:
FirstName
:
Address
In the following example, <Max-substrings> is set to 3. This results in three
splits of the string values, but a total of five strings in the resulting
output; the delimiter is included after the splits, until the maximum of three
substrings is reached. Additional delimiters in the final substring become part
of the substring.
'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3;
Chocolate
-
Vanilla
-
Strawberry-Blueberry
<Max-substrings>
Specifies the maximum number of times that a string is split. The default is
all the substrings split by the delimiter. If there are more substrings,
they are concatenated to the final substring. If there are fewer
substrings, all the substrings are returned. A value of 0 and negative values return
all the substrings.
Max-substrings does not specify the maximum number of objects that are returned;
its value equals the maximum number of times that a string is split.
If you submit more than one string (an array of strings) to the Split operator ,
the Max-substrings limit is applied to each string separately. Example:
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", 5
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune
<ScriptBlock>
An expression that specifies rules for applying the delimiter. The
expression must evaluate to $true or $false. Enclose the script
block in braces. Example:
$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>
Enclose the option name in quotation marks. Options are valid only
when the <Max-substrings> parameter is used in the statement.
The syntax for the Options parameter is:
"SimpleMatch [,IgnoreCase]"
"[RegexMatch] [,IgnoreCase] [,CultureInvariant]
[,IgnorePatternWhitespace] [,ExplicitCapture]
[,Singleline | ,Multiline]"
The SimpleMatch options are:
-- SimpleMatch: Use simple string comparison when evaluating the
delimiter. Cannot be used with RegexMatch.
-- IgnoreCase: Forces case-insensitive matching, even if the -cSplit
operator is specified.
The RegexMatch options are:
-- RegexMatch: Use regular expression matching to evaluate the
delimiter. This is the default behavior. Cannot be used with
SimpleMatch.
-- IgnoreCase: Forces case-insensitive matching, even if the -cSplit
operator is specified.
-- CultureInvariant: Ignores cultural differences in language
when evaluting the delimiter. Valid only with RegexMatch.
-- IgnorePatternWhitespace: Ignores unescaped whitespace and
comments marked with the number sign (#). Valid only with
RegexMatch.
-- Multiline: Multiline mode recognizes the start and end of lines
and strings. Valid only with RegexMatch. Singleline is the default.
-- Singleline: Singleline mode recognizes only the start and end of
strings. Valid only with RegexMatch. Singleline is the default.
-- ExplicitCapture: Ignores non-named match groups so that only
explicit capture groups are returned in the result list. Valid
only with RegexMatch.
UNARY and BINARY SPLIT OPERATORS
The unary split operator (-split <string>) has higher precedence than a
comma. As a result, if you submit a comma-separated list of strings to the
unary split operator, only the first string (before the first comma) is
split.
To split more than one string, use the binary split operator
(<string> -split <delimiter>). Enclose all the strings in parentheses,
or store the strings in a variable, and then submit the variable to the
split operator.
Consider the following example:
-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
EXAMPLES
The following statement splits the string at whitespace.
C:\PS> -split "Windows PowerShell 2.0`nWindows PowerShell with remoting"
Windows
PowerShell
2.0
Windows
PowerShell
with
remoting
The following statement splits the string at any comma.
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
The following statement splits the string at the pattern "er".
C:\PS>"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune
The following statement performs a case-sensitive split at the
letter "N".
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
eptune
The following statement splits the string at "e" and "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
The following statement splits the string at "e" and "r", but limits the
resulting substrings to six substrings.
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
M
cu
y,V
nus,
arth,Mars,Jupiter,Saturn,Uranus,Neptune
The following statement splits a string into three substrings.
C:\PS> "a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h
The following statement splits two strings into three substrings.
(The limit is applied to each string independently.)
C:\PS> "a,b,c,d", "e,f,g,h" -split ",", 3
a
b
c,d
e
f
g,h
The following statement splits each line in the here-string at the
first digit. It uses the Multiline option to recognize the beginning
of each line and string.
The 0 represents the "return all" value of the Max-substrings parameter. You can
use options, such as Multiline, only when the Max-substrings value
is specified.
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.
The following statement uses the SimpleMatch option to direct the -split
operator to interpret the dot (.) delimiter literally.
With the default, RegexMatch, the dot enclosed in quotation marks (".") is
interpreted to match any character except for a newline character. As a
result, the Split statement returns a blank line for every character except
newline.
The 0 represents the "return all" value of the Max-substrings parameter.
You can use options, such as SimpleMatch, only when the Max-substrings
value is specified.
C:\PS> "This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test
The following statement splits the string at one of two delimiters,
depending on the value of a variable.
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
The following split statements split an XML file first at the angle bracket
and then at the semicolon. The result is a readable version of the XML
file.
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 ";"
To display the result, type "$x".
C:\PS> $x
@{__NounName=Process
Name=PowerShell
Handles=428
VM=150081536
WS=34840576
PM=36253696
...
SEE ALSO
Split-Pathabout_Operators
about_Comparison_Operators
about_Join