在c#中计算字符串中包含特殊字符的字符串

counting a string with special characters in a string in c#

我想计算另一个字符串(日志文件)中的一个字符串(搜索词)。 使用 Split 方法拆分字符串然后搜索数组对我来说效率太低,因为日志文件非常大。

In the net 我发现了以下可能性,到目前为止效果很好。然而,

count = Regex.Matches(_editor.Text, txtLookFor.Text, RegexOptions.IgnoreCase).Count;

我现在 运行 遇到了另一个问题,当我计算 "Nachricht erhalten (".

格式的字符串时出现以下错误

错误信息:

System.ArgumentException: "Nachricht erhalten (" analysed - not enough )-characters.

您需要转义 ( 符号,因为它在正则表达式中有一个特殊的 function

var test = Regex.Matches("Nachricht erhalten (3)", @"Nachricht erhalten \(", RegexOptions.IgnoreCase).Count;

如果您通过用户输入执行此操作,而用户不熟悉正则表达式,您可能更容易在 while 循环中使用 IndexOf,您可以继续使用在最后一个循环。这在性能上也可能比正则表达式好一点。示例:

var test = "This is a test";
var searchFor = "is";
var count = 0;
var index = test.IndexOf(searchFor, 0);
while (index != -1)
{
    ++count;
    index = test.IndexOf(searchFor, index + searchFor.Length);
}