[玩转系统] 如何在 PowerShell 中进行子字符串化?
作者:精品下载站 日期:2024-12-14 05:16:00 浏览:12 分类:玩电脑
如何在 PowerShell 中进行子字符串化?
在操作字符串时,在 PowerShell 中使用子字符串是非常常见的要求。大多数时候,我需要获取字符串的子字符串。在本 PowerShell 教程中,我将通过各种示例解释如何在 PowerShell 中进行子字符串以及如何在 PowerShell 中使用 substring() 方法。
要使用 Substring() 方法在 PowerShell 中进行子字符串化,您需要指定起始索引以及子字符串的长度(可选)。语法为 $string.Substring(startIndex, length),其中 startIndex 是子字符串开始的从零开始的位置,length 是要提取的字符数。例如,要从“New York City”中提取“York”,您可以使用 $string.Substring(4, 4)。如果省略长度,则子字符串将延伸到字符串的末尾。
子串是字符串的一部分。例如,在字符串“New York City”中,“New York”是一个子字符串。 PowerShell 提供了多种从字符串中提取子字符串的方法。
注意:我使用 Visual Studio Code 执行所有 PowerShell 脚本,但您可以使用任何其他编辑器,例如 Windows PowerShell ISE。
1.PowerShell Substring()方法
PowerShell 中的 Substring() 方法根据起始索引和可选长度提取字符串的一部分。起始索引指定字符串中应开始提取的位置,长度确定要包含的字符数。
句法
$string.Substring(startIndex, [length])
startIndex
:子字符串从零开始的起始字符位置。length
:(可选)子字符串中的字符数。如果省略,子字符串将继续到字符串的末尾。
示例 1:从字符串中提取子字符串
让我们考虑一个表示完整地址的字符串:“123 Main Street, Los Angeles, CA 90001”。我们想要提取城市名称“Los Angeles”。
以下是在 PowerShell 中使用 substring() 方法从字符串中提取子字符串的完整脚本。
$address = "123 Main Street, Los Angeles, CA 90001"
$cityStartIndex = $address.IndexOf(",") + 2
$cityEndIndex = $address.IndexOf(",", $cityStartIndex)
$city = $address.Substring($cityStartIndex, $cityEndIndex - $cityStartIndex)
Write-Output $city
在此示例中,我们通过找到第一个逗号并添加 2(以跳过逗号和空格)来查找城市的起始索引。然后,我们找到下一个逗号来确定城市名称的结尾。最后,我们使用这些索引提取子字符串。
我使用 VS code 执行了上述脚本,您可以在下面的屏幕截图中看到输出:
示例 2:使用 Substring() 方法获取最左边和最右边的字符
下面是如何使用 PowerShell 中的 Substring() 方法获取最左边和最右边字符的另一个示例。
要从 PowerShell 中的字符串中提取最左边的字符,可以使用 Substring()
方法。假设您有字符串 "PowerShell"
,并且您想要提取前四个字符。您可以使用以下命令来实现此目的:
$string = "PowerShell"
$leftmost = $string.Substring(0, 4)
此脚本提取从位置 0
到 4
的字符,结果为 "Powe"
。
使用 PowerShell 中的 Substring()
方法,您还可以获取字符串最右边的字符。例如,如果您需要字符串 "PowerShell"
的最后四个字符,则可以使用:
$string = "PowerShell"
$rightmost = $string.Substring($string.Length - 4)
该脚本通过从字符串末尾之前的四个字符开始提取来捕获“hell”。
同样,如果你想从文件名中提取扩展名,你可以使用 substring 方法,如下所示:
$filename = "report2024.pdf"
$extension = $filename.Substring($filename.Length - 3)
这将产生“pdf”
。
示例 3:提取文件扩展名
让我向您展示另一个如何使用 PowerShell 中的 Substring() 方法从文件名中提取文件扩展名的示例。
假设您有一个代表文件名的字符串:“document.pdf”。我们要提取文件扩展名“pdf”。
$fileName = "document.pdf"
$fileExtension = $fileName.Substring($fileName.LastIndexOf(".") + 1)
Write-Output $fileExtension
在此示例中,我们使用 LastIndexOf
方法查找文件名中最后一个句点的位置,然后使用 Substring
提取文件扩展名。
下面的屏幕截图显示了我使用 VS code 执行上述脚本后的输出。它返回给我文件扩展名(.pdf)。
阅读在 PowerShell 中获取不带扩展名的文件名
2. 在PowerShell中使用Split()方法获取子字符串
现在,让我向您展示另一种方法:在 PowerShell 中从字符串中提取子字符串的 split 方法。
PowerShell split() 方法根据分隔符将字符串拆分为数组。
句法
$string.Split([separator], [count], [options])
separator
:分割字符串的字符。count
:(可选)要返回的子字符串的最大数量。options
:(可选)用于删除空条目的 StringSplitOptions。
示例 1:使用 Split() 方法提取子字符串
考虑一个代表全名的字符串:“John F. Kennedy”。我们想将其分为名字、中间名和姓氏。
以下是完整的 PowerShell 脚本。
$fullName = "John F. Kennedy"
$nameParts = $fullName.Split(" ")
$firstName = $nameParts[0]
$middleName = $nameParts[1]
$lastName = $nameParts[2]
Write-Output $firstName # Output: John
Write-Output $middleName # Output: F.
Write-Output $lastName # Output: Kennedy
在此示例中,我们用空格分割全名,然后使用数组索引访问每个部分。
示例 2:从电子邮件地址中提取域
让我向您展示如何在 PowerShell 中对子字符串使用 split() 方法的另一个示例。
考虑一个表示电子邮件地址的字符串:“[email protected]”。我们想要提取域名“powershellfaqs.com”。
然后,您可以使用以下 PowerShell 脚本。
$email = "[email protected]"
$domain = $email.Split("@")[1]
Write-Output $domain
在此示例中,我们使用 Split
方法在“@”字符处分割电子邮件地址,然后访问分割字符串的第二部分以获取域名。
看下面的截图;它显示的是域名。我使用 VS code 执行了上面的脚本。
在 PowerShell 中读取按换行符分割字符串
3.在PowerShell中使用正则表达式的子字符串
正则表达式在 PowerShell 中非常有用。让我向您展示如何使用正则表达式来子串。
句法
语法如下:
[regex]::Matches($string, $pattern)
$string
:输入字符串。$pattern
:正则表达式模式。
示例 1:使用正则表达式提取邮政编码
考虑相同的地址字符串:“123 Main Street, Los Angeles, CA 90001”。我们想要提取邮政编码。为此,我们可以使用 PowerShell 中的正则表达式。这是完整的脚本。
$address = "123 Main Street, Los Angeles, CA 90001"
$zipCodePattern = "\d{5}"
$zipCode = [regex]::Match($address, $zipCodePattern).Value
Write-Output $zipCode
在此示例中,我们使用正则表达式模式 \d{5}
来匹配五位邮政编码。这就是如何在 PowerShell 中使用正则表达式进行子字符串化。
我使用 Visual Studio Code 执行了上述 PowerShell 脚本,您可以在下面的屏幕截图中看到输出:
阅读在 PowerShell 中按单词拆分字符串
4. 使用 Select-String Cmdlet 的子字符串
以下是在 PowerShell 中进行子字符串处理的另一种方法:使用 Select-String cmdlet。
PowerShell 中的 Select-String
cmdlet 还可用于搜索字符串中的模式并提取子字符串。
句法
以下是 Select-String cmdlet 的语法。
Select-String -InputObject $string -Pattern $pattern
-InputObject
:输入字符串。-Pattern
:要搜索的模式。
示例 1:提取州缩写
考虑相同的地址字符串:“123 Main Street, Los Angeles, CA 90001”。我们想要提取州缩写“CA”。
下面是使用 Select-string 的子字符串的 PowerShell 脚本。
$address = "123 Main Street, Los Angeles, CA 90001"
$statePattern = "\b[A-Z]{2}\b"
$state = (Select-String -InputObject $address -Pattern $statePattern).Matches.Value
Write-Output $state # Output: CA
在此示例中,我们使用正则表达式模式 \b[A-Z]{2}\b
来匹配两个字母的州缩写。
结论
在本 PowerShell 教程中,我解释了在 PowerShell 中提取子字符串的不同方法,包括 Substring() 方法、Split() 方法、正则表达式、Select-String
cmdlet 和 IndexOf
和 LastIndexOf
方法。
我希望您现在也了解 substring() 方法以及如何在 PowerShell 中进行子字符串。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag