在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);
}
我想计算另一个字符串(日志文件)中的一个字符串(搜索词)。 使用 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);
}