添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
很拉风的小狗  ·  Oracle v$PROCESS-CSDN博客·  9 月前    · 
威武的香菇  ·  python - Invalid salt ...·  1 年前    · 

Split 运算符可将一个或多个字符串拆分为子字符串。 可以更改 Split 操作的以下元素:

  • 分隔符。 默认值为空格,但可以指定字符、字符串、模式或脚本块来指定分隔符。 PowerShell 中的 Split 运算符在分隔符中使用正则表达式,而不是简单字符。
  • 子字符串的最大数量。 默认情况下将返回所有子字符串。 如果指定的数字小于子字符串的数量,则剩余的子字符串将连接在最后一个子字符串中。
  • 指定分隔符匹配条件的选项,例如 SimpleMatch 和 Multiline。
  • 下图显示了 -split 运算符的语法。

    参数名称不会出现在命令中。 仅包含参数值。 这些值必须按语法关系图中指定的顺序显示。

    -Split <String>
    -Split (<String[]>)
    <String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
    <String> -Split {<ScriptBlock>} [,<Max-substrings>]
    

    可以在任何二进制 Split 语句(包含分隔符或脚本块的 Split 语句)中用 -iSplit-cSplit 替换 -split-iSplit-split 运算符不区分大小写。 -cSplit 运算符区分大小写,这意味着应用分隔符规则时会考虑大小写。

    <String> 或 <String[]>

    指定要拆分的一个或多个字符串。 如果提交多个字符串,所有字符串将使用相同的分隔符规则进行拆分。

    -split "red yellow blue green"
    yellow
    green
    

    标识子字符串末尾的字符。 默认分隔符是空格,包括空格和不可打印字符,例如换行符 (`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>

    指定拆分操作返回的最大子字符串数。 默认情况下,所有子字符串都由分隔符分割。 如果有更多子字符串,它们将串联到最终的子字符串中。 如果子字符串较少,则将返回所有子字符串。 值 0 将返回所有子字符串。

    $c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
    $c -split ",", 5
    
    Mercury
    Venus
    Earth
    Jupiter,Saturn,Uranus,Neptune
    

    如果向 -split 运算符提交多个字符串(字符串数组),则 Max-substrings 限制将分别应用于每个字符串。

    $c = 'a,b,c','1,2,3,4,5'
    $c -split ',', 3
    3,4,5
    

    <Max-substrings> 未指定返回的对象的最大数量。 在下面的示例中,<Max-substrings> 设置为 3。 这会导致三个子字符串值,但在生成的输出中总共有五个字符串。 在拆分之后包含分隔符,直到达到三个子字符串的最大值。 最终子字符串中的其他分隔符将成为子字符串的一部分。

    'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3
    
    Chocolate
    Vanilla
    Strawberry-Blueberry
    

    负值返回从输入字符串末尾开始请求的子字符串数量。

    PowerShell 7 中添加了对负值的支持。

    $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"}
    rcury,V
    arth,Mars,Ju
    r,Saturn,Uranus,N
    

    给名称加上引号。 仅当语句中使用 <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:多行模式强制 ^$ 匹配每行的开头,而不是输入字符串的开头和结尾。
  • Singleline:单行模式将输入字符串视为 SingleLine。 它强制 . 字符匹配每个字符(包括换行符),而不是匹配除换行符 \n 之外的每个字符。
  • ExplicitCapture:忽略未命名的匹配组,以便仅在结果列表中返回显式捕获组。 仅对 RegexMatch 有效。
  • 一元和二元拆分运算符

    一元拆分运算符 (-split <string>) 的优先级高于逗号。 因此,如果向一元拆分运算符提交以逗号分隔的字符串列表,则将仅拆分第一个字符串(第一个逗号之前)。

    使用以下模式之一来拆分多个字符串:

  • 使用二元拆分运算符(<string[]> -split <分隔符>)
  • 将所有字符串括在括号中
  • 将字符串存储在变量中,然后将该变量提交给 split 运算符
  • 请考虑以下示例:

    PS> -split "1 2", "a b"
    
    PS> "1 2", "a b" -split " "
    
    PS> -split ("1 2", "a b")
    
    PS> $a = "1 2", "a b"
    PS> -split $a
    

    以下语句在空格处拆分字符串。

    -split "Windows PowerShell 2.0`nWindows PowerShell with remoting"
    Windows
    PowerShell
    Windows
    PowerShell
    remoting
    

    以下语句在任意逗号处分割字符串。

    "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
    
    Mercury
    Venus
    Earth
    Jupiter
    Saturn
    Uranus
    Neptune
    

    以下语句在模式“er”处拆分字符串。

    "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
    cury,Venus,Earth,Mars,Jupit
    ,Saturn,Uranus,Neptune
    

    以下语句在字母“N”处执行区分大小写的拆分。

    "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
    
    Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
    eptune
    

    以下语句在“e”和“t”处拆分字符串。

    "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[et]'
    rcury,V
    h,Mars,Jupi
    urn,Uranus,N
    

    以下语句在“e”和“t”处拆分字符串,但将生成的子字符串限制为六个子字符串。

    "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
    arth,Mars,Jupiter,Saturn,Uranus,Neptune
    

    以下语句将字符串拆分为三个子字符串。

    "a,b,c,d,e,f,g,h" -split ",", 3
    c,d,e,f,g,h
    

    以下语句从字符串的末尾开始将字符串拆分为三个子字符串。

    "a,b,c,d,e,f,g,h" -split ",", -3
    
    a,b,c,d,e,f
    

    以下语句将两个字符串拆分为三个子字符串。 (该限制单独应用于每个字符串。)

    "a,b,c,d", "e,f,g,h" -split ",", 3
    

    以下语句在第一个数字处拆分 here- 字符串的每一行。 它使用 Multiline 选项来识别每行和每个字符串的开头。

    0 表示 Max-substrings 参数的“返回全部”值。 仅当指定 Max-substrings 值时,才能使用 Multiline 等选项。

    $a = @'
    1The first line.
    2The second line.
    3The third of three lines.
    $a -split "^\d", 0, "multiline"
    The first line.
    The second line.
    The third of three lines.
    

    以下语句使用反斜杠字符来转义点 (.) 分隔符。

    使用默认值 RegexMatch,引号 (".") 中的点被解释为匹配除换行符之外的任何字符。 因此,Split 语句将对除换行符以外的每个字符返回空白行。

    "This.is.a.test" -split "\."
    

    以下语句使用 SimpleMatch 选项指示 -split 运算符以文本方式解释点 (.) 分隔符。

    0 表示 Max-substrings 参数的“返回全部”值。 仅当指定 Max-substrings 值时,才能使用 SimpleMatch 等选项。

    "This.is.a.test" -split ".", 0, "simplematch"
    

    以下语句根据变量的值,在两个分隔符之一处拆分字符串。

    $i = 1
    $c = "LastName, FirstName; Address, City, State, Zip"
    $c -split $(if ($i -lt 1) {","} else {";"})
    
    LastName, FirstName
     Address, City, State, Zip
    
  • Split-Path
  • about_Operators
  • about_Comparison_Operators
  • about_Join
  • Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback.

    提交和查看相关反馈