当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于斯普利特

作者:精品下载站 日期:2024-12-14 02:18:11 浏览:14 分类:玩电脑

关于斯普利特


简短描述

解释如何使用 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 运算符区分大小写,这意味着应用分隔符规则时会考虑大小写。

参数

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

例子 :

-split "red yellow blue green"
red
yellow
blue
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

<最大子串>

指定分割操作返回的子字符串的最大数量。默认是所有子字符串都由分隔符分割。如果有更多子字符串,它们将连接到最终的子字符串。如果子串较少,则返回所有子串。值 0 返回所有子字符串。

例子 :

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

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

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

a
b
c
1
2
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

指定应用分隔符的规则的表达式。该表达式的计算结果必须为 $true 或 $false。将脚本块括在大括号中。

例子 :

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split {$_ -eq "e" -or $_ -eq "p"}
M
rcury,V
nus,
arth,Mars,Ju
it
r,Saturn,Uranus,N

tun

将选项名称括在引号中。仅当语句中使用 参数时,选项才有效。

选项参数的语法是:

"SimpleMatch [,IgnoreCase]"

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

SimpleMatch 选项有:

  • SimpleMatch:在评估分隔符时使用简单的字符串比较。不能与 RegexMatch 一起使用。
  • IgnoreCase:强制不区分大小写匹配,即使指定了 -cSplit 运算符也是如此。

RegexMatch 选项是:

  • RegexMatch:使用正则表达式匹配来计算分隔符。这是默认行为。不能与 SimpleMatch 一起使用。
  • IgnoreCase:强制不区分大小写匹配,即使指定了 -cSplit 运算符也是如此。
  • CultureInvariant:在评估分隔符时忽略语言中的文化差异。仅对 RegexMatch 有效。
  • IgnorePatternWhitespace:忽略未转义的空格和用井号 (#) 标记的注释。仅对 RegexMatch 有效。
  • 多行:多行模式强制 ^$ 匹配每行的开头,而不是输入字符串的开头和结尾。
  • Singleline:单行模式将输入字符串视为SingleLine。它强制 . 字符匹配每个字符(包括换行符),而不是匹配除换行符 \n 之外的每个字符。
  • ExplicitCapture:忽略未命名的匹配组,以便结果列表中仅返回显式捕获组。仅对 RegexMatch 有效。

一元和二元分割运算符

一元分割运算符 (-split

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯