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

[玩转系统] 如何在 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 执行了上述脚本,您可以在下面的屏幕截图中看到输出:

[玩转系统] 如何在 PowerShell 中进行子字符串化?

示例 2:使用 Substring() 方法获取最左边和最右边的字符

下面是如何使用 PowerShell 中的 Substring() 方法获取最左边和最右边字符的另一个示例。

要从 PowerShell 中的字符串中提取最左边的字符,可以使用 Substring() 方法。假设您有字符串 "PowerShell",并且您想要提取前四个字符。您可以使用以下命令来实现此目的:

$string = "PowerShell"
$leftmost = $string.Substring(0, 4)

此脚本提取从位置 04 的字符,结果为 "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 中进行子字符串化?

阅读在 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 中进行子字符串化?

在 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 中进行子字符串化?

阅读在 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 和 IndexOfLastIndexOf 方法。

我希望您现在也了解 substring() 方法以及如何在 PowerShell 中进行子字符串

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

取消回复欢迎 发表评论:

关灯