计算字符串中的字符串数量?

时间:2013-03-15 19:09:00

标签: string powershell

如何使用Powershell计算字符串中字符串的数量?

例如:

$a = "blah test <= goes here / blah test <= goes here / blah blah"

我想计算<= goes here /出现在上面的次数。

9 个答案:

答案 0 :(得分:23)

另一种方式(类似于@mjolinor方式)在一行中:

([regex]::Matches($a, "<= goes here /" )).count

答案 1 :(得分:4)

使用正则表达式:

$a = "blah test <= goes here / blah test <= goes here / blah blah"
[regex]$regex = '<= goes here /'
$regex.matches($a).count
2

答案 2 :(得分:2)

您可以使用带有字符串对象数组的[.NET String.Split][1]方法重载,然后计算您获得的分割数。

($a.Split([string[]]@('<= goes here /'),[StringSplitOptions]"None")).Count - 1

请注意,您必须将搜索的字符串强制转换为字符串数组,以确保获得正确的Split重载,然后从结果中减去1,因为split将返回搜索字符串周围的所有字符串。同样重要的是“无”选项,如果搜索字符串在开头或结尾返回,将导致Split返回数组中的空字符串(可以计算)。

答案 3 :(得分:2)

我有一个带有一堆管道的字符串。我想知道有多少,所以我用它来得到它。另一种方式:)

$ExampleVar = "one|two|three|four|fivefive|six|seven";
$Occurrences = $ExampleVar.Split("|").GetUpperBound(0);
Write-Output "I've found $Occurrences pipe(s) in your string, sir!";
  • 马库斯

答案 4 :(得分:1)

不是最佳解决方案,但很实用:

$a.Replace("<= goes here /","♀").Split("♀").Count

确保您的文本不包含“♀”字符。

答案 5 :(得分:0)

为了扩大BeastianSTI&#39;优秀的答案:

查找文件行中使用的最大分隔符数(运行时未知的行):

$myNewCount = 0
foreach ($line in [System.IO.File]::ReadLines("Filename")){
    $fields = $line.Split("*").GetUpperBound(0);
    If ($fields -gt $myNewCount)
    {$myNewCount = $fields}
}

答案 6 :(得分:0)

还有另一种班轮:(Select-String "_" -InputObject $a -AllMatches).Matches.Count

答案 7 :(得分:0)

我很惊讶没有人提到-split运算符。

对于区分大小写的匹配,选择-cSplit运算符为-split / -iSplit都是不区分大小写的。

PS Y:\Power> $a = "blah test <= goes here / blah test <= goes here / blah blah"

# $a -cSplit <Delimiter>[,<Max-substrings>[,"<Options>"]]
# Default is RegexMatch (makes no difference here):
PS Y:\Power> ($a -cSplit '<= goes here /').Count - 1
2

# Using 'SimpleMatch' (the 0 means return no limit or return all)
PS Y:\Power> ($a -cSplit '<= goes here/',0,'simplematch').Count - 1
2

答案 8 :(得分:0)

Select-String 的另一种解决方案

$a = "blah test <= goes here / blah test <= goes here / blah blah"

($a | Select-String -Pattern "<= goes here /" -AllMatches).Matches.Count

选择字符串文档:

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string