首页 > 系统相关 >(18)Powershell中的字符串拆分运算符

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

时间:2024-01-24 13:34:38浏览次数:28  
标签:PS 定界符 18 运算符 v1.0 拆分 字符串 Powershell

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

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


拆分运算符

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

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

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

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

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

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

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

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

String

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

PS C:\Windows\System32\WindowsPowerShell\v1.0>  -Split "abc def ghi"
abc
def
ghi

Delimiter

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

PS C:\Windows\System32\WindowsPowerShell\v1.0> "ab:cd:ef" -split ":"
ab
cd
ef

Max-substrings

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

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


PS C:\Windows\System32\WindowsPowerShell\v1.0> $a = "Monday,Tuesday,Wesday,Thurday,Friday,Saturday,Sunday"

PS C:\Windows\System32\WindowsPowerShell\v1.0> $a -split ",", 4
Monday
Tuesday
Wesday
Thurday,Friday,Saturday,Sunday

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


Options

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

Options 参数的语法为:

1   "SimpleMatch [,IgnoreCase]"
2   "[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 C:\Windows\System32\WindowsPowerShell\v1.0> $a = "Monday,Tuesday,Wesday,Thurday,Friday,Saturday,Sunday"

PS C:\Windows\System32\WindowsPowerShell\v1.0> $a -split {$_ -eq "n" -or $_ -eq "r"}
Mo
day,Tuesday,Wesday,Thu
day,F
iday,Satu
day,Su
day

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


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

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

PS C:\Windows\System32\WindowsPowerShell\v1.0> -split "a b","c d"
a
b
c d

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

PS C:\Windows\System32\WindowsPowerShell\v1.0> "a b","c d" -split " "
a
b
c
d

PS C:\Windows\System32\WindowsPowerShell\v1.0> -split ("a b","c d")
a
b
c
d

PS C:\Windows\System32\WindowsPowerShell\v1.0>  $a = "a b","c d"

PS C:\Windows\System32\WindowsPowerShell\v1.0> -split $a
a
b
c
d


总结

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

标签:PS,定界符,18,运算符,v1.0,拆分,字符串,Powershell
From: https://www.cnblogs.com/zhang-snail/p/17984344

相关文章

  • [整理参考] CMD/DOS下运算符号的作用
    因关于DOS符号的总结很少,所以根据[1],经过几次整理之后,写了下面这个《CMD/DOS符号参考》,推荐新手好好看看,老手温习。标题:[整理参考]CMD/DOS下符号的作用参考作者:lxmxn[at]bbs.cn-dos.net时间:2007-5-27邮箱:lxmxn520[at]163.com说明:1、转帖请注明原帖出处属于中国DOS联盟(www.cn-do......
  • 180. Consecutive Numbers 连续登录n次的用户
    虽然题目很简短,但是很难做啊!属于比较经典的题目,记录一下思路。参考链接:https://leetcode.cn/problems/consecutive-numbers/solutions/21537/sql-server-jie-fa-by-neilsonsrow_number()over([partitionbyvalue_expression,...n]orderbycolumnName)题目解析:1.要获......
  • Microsoft 365 开发:开发者如何使用Delegated Access通过PowerShell调用Graph API
    51CTOBlog地址:https://blog.51cto.com/u_13969817MicrosoftGraphAPI是一种RESTfulwebAPI,它整合了对各种Microsoft365服务的访问,允许开发人员创建跨多个平台与数据交互的应用程序,包括AzureActiveDirectory、SharePoint、OneDrive、Outlook等。MicrosoftGraphPowerShell适......
  • [转帖]彻底搞明白 GB2312、GBK 和 GB18030
    https://zhuanlan.zhihu.com/p/453675608 日常工作的过程中,关于字符编码的问题经常让人头疼不已,这篇文章就来捋一捋关于GB2312、GBK、GB18030相关的知识以及它们和Unicode的关系简介GB23121980年,中国发布了第一个汉字编码标准,也即GB2312,全称《信息交换用汉......
  • P5015 [NOIP2018 普及组] 标题统计
    1.题目介绍[NOIP2018普及组]标题统计题目背景NOIP2018普及组T1题目描述凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不计算在内。输入格式输入文件只有一行,......
  • 设备通过GB28181注册到EasyCVR,平台看不到设备信息的排查方法汇总
    智慧安防平台EasyCVR平台支持设备通过4G、5G、WIFI、有线等方式进行视频流的接入与传输,支持的接入协议包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK。经常有用户咨询我们,将海康摄像头通过GB/T28181协议接到EasyCVR平台,但是在平台上为什么看不到设备?今天我们就来总结......
  • 吊钩电子秤方案主控芯片CSU8RP1185
    在生活中,买菜时常常出现缺斤少两的情况,这种情况多是商家秤有很大问题,往往消费者是最吃亏的,这种情况下,我们最好是带个吊钩电子秤,测量菜的重量,有问题直接拨打举报电话举报商家,使商家得到应有的惩罚。话说回来,重点在于吊钩电子秤,这种小型的电子秤,市面上有的生产商有很多,知名......
  • 电子秤芯片方案/吊钩秤主控CSU8RP1185
     在生活中,买菜时常常出现缺斤少两的情况,这种情况多是商家秤有很大问题,往往消费者是最吃亏的,这种情况下,我们最好是带个吊钩电子秤,测量菜的重量,有问题直接拨打举报电话举报商家,使商家得到应有的惩罚。 话说回来,重点在于吊钩电子秤,这种小型的电子秤,市面上有的生产商有很多,知名的......
  • P4899 [IOI2018] werewolf 狼人 题解
    因为我记忆力不好,经常遇到之前做过的题一下子想不起来,所以打算基本上给每个比较有意思的题写题解,同时造福后代。这是werewolf,它是furry,很可爱题意:一张无向图,点有点权,每次询问从\(u\)到\(v\)的路径中,是否存在一条先走点权大于等于\(L\),再走点权小于等于\(R\)的路径。思路......
  • 文心一言 VS 讯飞星火 VS chatgpt (185)-- 算法导论14.1 2题
    二、用go语言,对于图14-1中的红黑树T和关键字x.key为35的结点x,说明执行OS-RANK(T,x)的过程。文心一言:在红黑树中,OS-RANK(T,x)是一个操作,用于计算节点x在红黑树T中的秩。秩是一个节点的相对高度,对于根节点,其秩为0。首先,我们需要明确红黑树的性质:每个节点要么是红色,要么......