您将如何使用 Powershell 计算字符串中的字符串数?
例如:
$a = "blah test <= goes here / blah test <= goes here / blah blah"
<= goes here /
我想计算上面出现了多少次。
您将如何使用 Powershell 计算字符串中的字符串数?
例如:
$a = "blah test <= goes here / blah test <= goes here / blah blah"
<= goes here /
我想计算上面出现了多少次。
一行中的另一种方式(类似于@mjolinor 方式):
([regex]::Matches($a, "<= goes here /" )).count
我有一根绳子,里面有一堆管子。我想知道有多少,所以我用这个来得到它。只是另一种方式:)
$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!";
使用正则表达式:
$a = "blah test <= goes here / blah test <= goes here / blah blah"
[regex]$regex = '<= goes here /'
$regex.matches($a).count
2
您可以使用采用[.NET String.Split][1]
字符串对象数组的方法重载,然后计算获得的拆分次数。
($a.Split([string[]]@('<= goes here /'),[StringSplitOptions]"None")).Count - 1
请注意,您必须将搜索的字符串转换为字符串数组,以确保获得正确的Split
重载,然后从结果中减去 1,因为 split 将返回搜索字符串周围的所有字符串。同样重要的是“无”选项,如果您的搜索字符串在开头或结尾返回,它将导致拆分在数组中返回空字符串(您可以计算)。
还有另一种替代方案:(Select-String "_" -InputObject $a -AllMatches).Matches.Count
我很惊讶没有人提到-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
只是为了扩展 BeastianSTI 的优秀答案:
查找文件行中使用的最大分隔符数(运行时行未知):
$myNewCount = 0
foreach ($line in [System.IO.File]::ReadLines("Filename")){
$fields = $line.Split("*").GetUpperBound(0);
If ($fields -gt $myNewCount)
{$myNewCount = $fields}
}
不是最好的解决方案,但很实用:
$a.Replace("<= goes here /","♀").Split("♀").Count
确保您的文本不包含“♀”字符。
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