12

Powershell を使用して文字列内の文字列の数をカウントするにはどうすればよいでしょうか?

例えば:

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

上記に何回<= goes here /出現するかを数えたいと思います。

4

9 に答える 9

31

別の方法 (@mjolinor の方法と同様) を 1 行で:

([regex]::Matches($a, "<= goes here /" )).count
于 2013-03-15T20:37:20.647 に答える
8

たくさんのパイプが入った弦がありました。何個あるか知りたかったので、これで調べてみました。ちょうど別の方法:)

$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!";
  • マーカス
于 2015-03-20T22:30:22.760 に答える
6

正規表現の使用:

$a = "blah test <= goes here / blah test <= goes here / blah blah"
[regex]$regex = '<= goes here /'
$regex.matches($a).count
2
于 2013-03-15T19:32:51.543 に答える
3

[.NET String.Split][1]文字列オブジェクトの配列を受け取るメソッド オーバーロードを使用して、取得した分割数を数えることができます。

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

Splitsplit は検索文字列を囲むすべての文字列を返すため、検索する文字列を文字列配列にキャストして正しいオーバーロードを取得し、結果から 1 を減算する必要があることに注意してください。検索文字列が最初または最後に返された場合に、Split が配列に null 文字列を返すようにする "None" オプションも重要です (これは数えることができます)。

于 2013-03-15T19:23:29.740 に答える
1

BeastianSTI の優れた回答を拡張するだけです。

ファイルの行で使用されるセパレーターの最大数を見つける (行は実行時に不明):

$myNewCount = 0
foreach ($line in [System.IO.File]::ReadLines("Filename")){
    $fields = $line.Split("*").GetUpperBound(0);
    If ($fields -gt $myNewCount)
    {$myNewCount = $fields}
}
于 2015-10-19T18:49:16.610 に答える
1

最善の解決策ではありませんが、実用的です:

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

テキストに「♀」文字が含まれていないことを確認してください。

于 2020-08-24T12:16:52.173 に答える