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

[玩转系统] 如何在 PowerShell 中计算字符串中子字符串的出现次数?

作者:精品下载站 日期:2024-12-14 05:19:24 浏览:12 分类:玩电脑

如何在 PowerShell 中计算字符串中子字符串的出现次数?


最近,我正在编写一个 PowerShell 脚本来获取字符串中子字符串的出现次数。我将通过此处的示例详细解释如何计算 PowerShell 中字符串中子字符串的出现次数

要计算 PowerShell 中字符串中子字符串的出现次数,您可以使用多种方法。 -split 运算符按子字符串拆分字符串,并将结果部分减一,例如 ($string -split $substring).Count - 1

有多种方法可以做到这一点。让我一一给大家解释一下。

1- 使用 -split 运算符

PowerShell -split 运算符是计算子字符串出现次数的有效方法。当您将字符串拆分为子字符串时,部分数减一即为子字符串的计数。

这是一个例子。

$string = "John, Mary, John, Michael, John"
$substring = "John"
$count = ($string -split $substring).Count - 1
Write-Output $count

在此示例中,字符串由子字符串“John”分割。生成的数组有四个部分,这意味着“John”出现了 3 次。

我使用 VS code 执行了上述 PowerShell 脚本,您可以在下面的屏幕截图中看到输出:

[玩转系统] 如何在 PowerShell 中计算字符串中子字符串的出现次数?

查看在 PowerShell 中检查字符串是否包含子字符串

2- 使用 Select-String Cmdlet

您还可以使用 Select-String PowerShell cmdlet 来计算字符串中子字符串的出现次数。

Select-String cmdlet 使用正则表达式搜索文本。它还可以计算 PowerShell 中字符串中匹配的数量。

让我给你举个例子。

$string = "John, Mary, John, Michael, John"
$substring = "John"
$count = ($string | Select-String -Pattern $substring).Matches.Count
Write-Output $count

此方法使用 Select-String 查找子字符串“John”的所有匹配项并对其进行计数。

您可以在下面的屏幕截图中看到输出:

[玩转系统] 如何在 PowerShell 中计算字符串中子字符串的出现次数?

3- 使用-replace 运算符

PowerShell 中的 -replace 运算符还可用于通过用空字符串替换子字符串并比较长度来计算出现次数。

这是一个例子。

$string = "John, Mary, John, Michael, John"
$substring = "John"
$count = ($string.Length - ($string -replace $substring, "").Length) / $substring.Length
Write-Output $count

这里,将原始长度减去不包含子字符串的字符串长度,并将结果除以子字符串的长度即可得到计数。

您可以查看下面的屏幕截图以了解确切的输出。

[玩转系统] 如何在 PowerShell 中计算字符串中子字符串的出现次数?

阅读在 PowerShell 中检查字符串是否包含多个值

4- 在循环中使用 .IndexOf 方法

可以在循环中使用 .IndexOf 方法来计算 PowerShell 中字符串中的出现次数。

这是一个完整的例子。

$string = "John, Mary, John, Michael, John"
$substring = "John"
$count = 0
$index = 0

while ($index -ne -1) {
    $index = $string.IndexOf($substring, $index)
    if ($index -ne -1) {
        $count++
        $index += $substring.Length
    }
}

Write-Output $count

此方法迭代字符串,查找子字符串的每次出现并对它们进行计数。

您可以在下面的屏幕截图中检查确切的输出:

[玩转系统] 如何在 PowerShell 中计算字符串中子字符串的出现次数?

5-使用正则表达式

PowerShell 中的正则表达式也可用于搜索字符串中的模式。 PowerShell 通过 System.Text.RegularExpressions.Regex 类支持正则表达式。

这是一个例子。

$string = "John, Mary, John, Michael, John"
$substring = "John"
$regex = [regex]::Escape($substring)
$count = [regex]::Matches($string, $regex).Count
Write-Output $count

在此示例中,子字符串被转义以确保将其视为文字字符串,并使用 Matches 方法来计算出现次数。

结论

PowerShell 提供了多种方法来计算字符串中子字符串的出现次数。我已经用计算 PowerShell 中字符串中子字符串出现次数的示例解释了每种方法。我希望本教程对您有所帮助。

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

取消回复欢迎 发表评论:

关灯