主题 about_Split 简短说明 说明如何使用拆分运算符将一个或多个字符串拆分为多个子字符串。 详细说明 拆分运算符用于将一个或多个字符串拆分为多个子字符串。可更改拆分操作的以下元素: -- 定界符。默认为空白,但是可指定字符、字符串、模式或用于设置定界符的脚本块。 -- 子字符串的最大数目。默认设置为返回所有子字符串。如果指定的数字小于子字符串数, 则其余子字符串将合并到最后一个子字符串中。 -- 用于指定定界符匹配条件的选项,如 SimpleMatch 和 Multiline。 语法 下图显示了 -split 运算符的语法。 命令中没有包含参数名称,只包含了参数值。参数值必须按语法图中指定的顺序出现。 -Split <String> <String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]] <String> -Split {<ScriptBlock>} [,<Max-substrings>] 在任何拆分语句中,都可用 -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 Address <Max-substrings> 指定返回的子字符串的最大数目。默认设置为通过定界符拆分出的所有子字符串。 如果子字符串数目大于最大数目,多出的子字符串将合并到最后一个子字符串中。如果子字符串数目 小于最大数目,将返回所有子字符串。使用 0 值或负值时将返回所有子字符串。 如果向拆分运算符提交多个字符串(一组字符串),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,Neptu ne" $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:使用 Multiline 模式可识别行和字符串的开头和结尾。仅当与 RegexMatch 一起使 用时有效。默认设置为 Singleline。 -- Singleline:使用 Singleline 模式只识别字符串的开头和结尾。仅当与 RegexMatch 一起使用 时有效。默认设置为 Singleline。 -- ExplicitCapture:忽略未命名的匹配组,以便仅在结果列表中返回显式捕获组。仅当与 RegexMatch 一起使用时有效。 一元和二元拆分运算符 一元拆分运算符 (-split <string>) 的优先级高于 逗号。因此,如果向一元拆分运算符提交逗号分隔的字符串列表,将只拆分第一个字符串(第一个逗号之前的部分)。 要拆分多个字符串,请使用二元拆分运算符 (<string> -split <delimiter>)。可将所有字符串都括在圆括号 内, 或在变量中存储这些字符串,然后向拆分运算符提交该变量。 请看以下示例: -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"拆分字符串,但将生成的子字符串数限制为 6 个。 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 值表示 Max-substrings 参数的"全部返回"值。仅当指定 Max-substrings 值时才能使用如 Multiline 等选项。 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 时,括在引号中的点(".")被解释为与除换行符以外的其他任何字符匹配。因此, 拆分语句会对除换行符之外的每个字符都返回一个空白行。 0 值表示 Max-substrings 参数的"全部返回"值。仅当指定 Max-substrings 值时才能使用如 SimpleMatch 等选项。 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