(18)Powershell中的字符串拆分运算符

Powershell中提供了对字符串的拆分操作运算符。-split 运算符将一个字符串拆分成多个字符串。

拆分运算符

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

(1)定界符。默认为空白,但是可指定字符、字符串、模式或用于设置定界符的脚本块。

(2)子字符串的最大数目。默认设置为返回所有子字符串。如果指定的数字小于子字符串数,则其余子字符串将合并到最后一个子字符串中。

(3)用于指定定界符匹配条件的选项,如 SimpleMatch 和 Multiline。

拆分运算符的语法如下(3种语法,意味着有三种使用方式):

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

需要注意的是,该运算符中没有参数的名称,只包含参数的值。所以参数值必须按语法中指定的顺序出现。-Split 运算有区分大小的格式(默认不区分大小写),-iSplit 运算符不区分大小写。-cSplit 运算符区分大小写,这意味着应用定界符规则时会考虑大小写。

下面对 -Split 运算符的参数举例说明。

<String>

指定要拆分的一个或多个字符串。如果是多个字符串,则使用给定的相同的分隔符来分割所有的字符串。例如:

PS D:\> -Split "abc def ghi"
abc
def
ghi

<Delimiter>

    分隔符,用于标识子字符串结束位置的字符(即用什么将一个字符串分割成多个子字符串)。默认定界符是空白,包括空格以及如换行符 (`n) 和制表符 (`t) 等不可打印字符。拆分字符串时,将从所有子字符串中省略定界符。例如:

PS D:\> "ab:cd:ef" -split ":"
ab
cd
ef

<Max-substrings>

可选参数,指定返回的子字符串的最大数目。默认设置为通过定界符拆分出的所有子字符串。如果子字符串数目大于最大数目,多出的子字符串将合并到最后一个子字符串中。如果子字符串数目小于最大数目,将返回所有子字符串。使用 0 值或负值时将返回所有子字符串。

如果向拆分运算符提交多个字符串(一组字符串),Max-substrings 限制将单独应用于每个字符串。例如:

PS D:\> $a = "Monday,Tuesday,Wesday,Thurday,Friday,Saturday,Sunday"
PS D:\> $a -split ",", 4
Monday
Tuesday
Wesday
Thurday,Friday,Saturday,Sunday

需要注意的是参数之间是拿逗号隔开的。

<Options>

该参数仅当语句中使用 <Max-substrings> 参数时选项才有效,需要请将选项名称括在引号内。

Options 参数的语法为:

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

SimpleMatch 选项为:

(1)SimpleMatch:计算定界符时使用简单字符串比较。不可与 RegexMatch 一起使用。

(2)IgnoreCase:强制进行不区分大小写的匹配,即使指定 -cSplit 运算符也如此。

RegexMatch 选项为:

(1)RegexMatch:使用正则表达式匹配来计算定界符。这是默认行为。不可与 SimpleMatch 一起使用。

(2)IgnoreCase:强制进行不区分大小写的匹配,即使指定 -cSplit 运算符也如此。

(3)CultureInvariant:在计算定界符时忽略语言上的区域性差异。仅当与 RegexMatch 一起使用时有效。

(4)IgnorePatternWhitespace:忽略未转义空白以及使用井号 (#) 标记的注释。仅当与RegexMatch 一起使用时有效。

(5)Multiline:使用 Multiline 模式可识别行和字符串的开头和结尾。仅当与 RegexMatch 一起使用时有效。默认设置为 Singleline。

(6)Singleline:使用 Singleline 模式只识别字符串的开头和结尾。仅当与 RegexMatch 一起使用时有效。默认设置为 Singleline。

(7)ExplicitCapture:忽略未命名的匹配组,以便仅在结果列表中返回显式捕获组。仅当与RegexMatch 一起使用时有效。

<ScriptBlock>

用于指定定界符应用规则的表达式。该表达式的计算结果必须是 $true 或 $false。脚本块需放在大括号中。例如:

PS D:\> $a = "Monday,Tuesday,Wesday,Thurday,Friday,Saturday,Sunday"
PS D:\> $a -split {$_ -eq "n" -or $_ -eq "r"}
Mo
day,Tuesday,Wesday,Thu
day,F
iday,Satu
day,Su
day

从上面的语句可以看出,在指定的字符串中查找指定的分隔符(本例中的是"n"或者"r"),查找到就执行分隔操作。



2. 一元和二元拆分运算符

-split <string> 这种格式称为一元拆分运算符,它的优先级高于逗号。即,如果向一元拆分运算符提交逗号分隔的字符串列表,那么会只拆分第一个字符串(第一个逗号之前的部分)。例如:

PS D:\> -split "a b","c d"
a
b
c d

<string> -split <delimiter> 这种格式称为二元拆分运算符。可将所有字符串都括在圆括号内,或将这些字符串存储在变量中,然后向拆分运算符提交该变量。例如:

PS D:\> "a b","c d" -split " "
a
b
c
d
PS D:\> -split ("a b","c d")
a
b
c
d
PS D:\> $a = "a b","c d"
PS D:\> -split $a
a
b
c
d


总结

Powershell中的拆分运算符可以对指定的字符串进行分隔,意味着可以截取字符串中的指定部分,这往往用于对时间格式的截取,或是截取文件名并进行模糊查找。

时间: 2024-10-12 21:47:01

(18)Powershell中的字符串拆分运算符的相关文章

(20)Powershell中的特殊运算符

Powershell 中除了常见的算术运算符,赋值运算符,比较运算符,位运算符,逻辑运算符,字符串的拆分和合并运算符,转义字符,还有一些特殊的运算符,这些特殊的运算符往往可以解决一些特殊的问题,比如执行运行命令,更改值的数据类型等. & (调用运算符) 使用 & (调用运算符)可以运行命令.脚本或脚本块.因为调用运算符不进行分析,所以它不能解释命令参数.此调用运算符用于指示它后面的值为命令(而不是字符串).使用此运算符可以运行存储在变量中并由字符串表示的命令.例如: PS C:\> 

(19)Powershell字符串合并运算符

Powershell 提供了对字符串的合并运算符,连接运算符 -join 将一组字符串连接成单个字符串,子字符串按其在命令中出现的顺序添加到生成的字符串中. 连接运算符 Powershell中字符串的连接运算符的语法如下: -Join <String[]> <String[]> -Join <Delimiter> 参数解释. <String[]> 要连接的子字符串数组,即要对哪些子字符串进行连接. <Delimiter> 指定放在被连接字符串之间

(15)Powershell中的类型运算符

这节介绍 Powershell 中的类型运算符. Powershell 中的类型运算符可以与 .Net Framework 类型协同使用,可以用来判断一个对象是否是指定的 .Net Framework 类型的一个实例,或是判断一个对象是否可以转换为 .Net Framework 类型. Powershell 支持以下类型运算符 运算符 说明 示例 -is 如果对象是指定的 .Net Framework 类型则返回 TRUE,否则返回 FALSE PS C:\> "abc" -is

(17)Powershell中的重定向运算符

默认情况下,Powershell 把输出发送到屏幕显示.但是,Powershell也可以将输出重定向至一个文本文件,或将错误输出重定向至常规输出流. 重定向运算符有什么用 ? 重定向运算符意味着我们可以将命令的输出信息输出到指定的文件,完全满足脚本中的log的要求,即可以利用重定向打印脚本或命令执行的详细信息. Powershell 中有以下重定向运算符. 运算符 说明 示例 > 将输出发送到指定文件. PS D:\> Get-Process > process.txt >>

在VBA中进行字符串比较时,会用到比较运算符

通常,在VBA中进行字符串比较时,会用到比较运算符(如=.>等).Like运算符和StrComp函数.此外,在模块的开头用Option Compare语句指定比较方式.2.1.1 比较运算符可以采用简单的逻辑运算符进行两个字符串的比较,即<(小于).<=(小于或等于).>(大于).>=(大于或等于).=(等于).<>(不等于).此外,还可以使用Like运算符进行比较.2.1.2 StrComp函数StrComp函数返回字符串比较的结果.其语法为:StrComp(s

17、如何对字符串进行左, 右, 居中对齐 18、如何去掉字符串中不需要的字符 19、如何读写文本文件 20、如何处理二进制文件 21、如何设置文件的缓冲

17.如何对字符串进行左, 右, 居中对齐 info = "GBK" print(info.ljust(20)) print(info.ljust(20,'#')) print(info.rjust(20,'#')) print(info.center(20,"#")) print(format(info,'<20')) print(format(info,'>20')) print(format(info,'^20')) result: GBK GBK

(21)Powershell中的通配符

使用通配符进行文件的模糊查找 Powershell 中的通配符可以实现模糊查找, 也就是说可以对一组项(而不是单个项)进行查找.例如,如果想查找 D:\MyPowerShell 目录中所有扩展名为 .ps1 的文件,可以执行以下命令: PS C:\> Get-ChildItem D:\MyPowerShell\*.ps1     目录: D:\MyPowerShell Mode                LastWriteTime     Length Name ----          

Java中的字符串

作者:禅楼望月(http://www.cnblogs.com/yaoyinglong/) 1.字符串可以被GC回收了 我们之前在表达式的陷阱中就说到"对于Java程序中的字符直接量,JVM会使用一个字符串池来保护他们:当第一次使用某个字符串直接时,JVM会将它们放入字符串池进行缓存."在jdk1.7之前HotSpot将该字符串常量池放在永久代中,所以当初我们还说"在一般情况下,字符串缓冲池中字符串对象不会被垃圾回收",但是jdk1.7以后HotSpot就将字符串常量

第48篇 说说.Net与Java中的字符串

原文地址:http://blog.laofu.online/2017/08/18/String-In-dotnet-Java/ Java字符串碰到的问题 在写Java程序碰到一个问题,而正是这个问题引发了我对字符串的思考,Java示例代码如下: public void TestStr(String success) { if(success=="Y"){ System.out.println("Equal"); } else { System.out.println