C# 如何检查一个字符串在另一个字符串中存在的次数

C# 如何检查一个字符串在另一个字符串中存在的次数,c#,C#,我想知道一个字符串在一个字符串中出现了多少次。例如,我想看看这一段中2018年发生了多少次: zaeazeaze2018 阿泽阿泽2018阿泽阿泽 AZE4AZE2018 在这种情况下,它发生了3次 我尝试了以下代码 但问题是它总是返回0 我在这里找不到错误: public static string count(string k) { int i = 0; foreach(var line in k) { if (line.ToString().Con

我想知道一个字符串在一个字符串中出现了多少次。例如,我想看看这一段中2018年发生了多少次:

zaeazeaze2018
阿泽阿泽2018阿泽阿泽
AZE4AZE2018

在这种情况下,它发生了3次

我尝试了以下代码

但问题是它总是返回0

我在这里找不到错误:

public static string count(string k)
{
    int i = 0;
    foreach(var  line in k)
    {
        if (line.ToString().Contains("Bestellung sehen"))
        {
            i++;
            i = +i;
        }

    }
    return i.ToString();
}

str是
方法中的
字符串
str2是您的子字符串,它是
Bestellung sehen

int n = str2.length
int k = 0;
for(int i=0;i < str.length; i++){
    if(str.substring(i,i+n-1)){
        k++;
        if(i+n-1 >= str.length){
            break;
        }
    }
}

return k.toString()
int n=str2.length
int k=0;
对于(int i=0;i=str.length){
打破
}
}
}
返回k.toString()

str是
方法中的
字符串
str2是您的子字符串,它是
Bestellung sehen

int n = str2.length
int k = 0;
for(int i=0;i < str.length; i++){
    if(str.substring(i,i+n-1)){
        k++;
        if(i+n-1 >= str.length){
            break;
        }
    }
}

return k.toString()
int n=str2.length
int k=0;
对于(int i=0;i=str.length){
打破
}
}
}
返回k.toString()
使用以下方法:

string text = "Hello2018,world2018\r\nWe have five 2018 here\r\n2018is coming2018"
int Counter = Regex.Matches(text, "2018").Count;
Console.WriteLine(Counter.ToString()); //write : 5
使用以下命令:

string text = "Hello2018,world2018\r\nWe have five 2018 here\r\n2018is coming2018"
int Counter = Regex.Matches(text, "2018").Count;
Console.WriteLine(Counter.ToString()); //write : 5
您可以使用来处理此类情况。正则表达式为您提供了在字符串中进行模式匹配的良好灵活性。在您的例子中,我使用正则表达式为您准备了一个示例代码:

using System;
using System.Text.RegularExpressions;
                
public class Program
{
    public static void Main()
    {
        string str="zaeazeaze2018azeazeazeazeaze2018azezaazeazeaze4azeaze2018";
        string regexPattern = @"2018";
        int numberOfOccurence = Regex.Matches(str, regexPattern).Count;
        
        Console.WriteLine(numberOfOccurence);
        
    }
}
工作示例:

如果您注意到行
string regexpatern=@“2018”
,这将设置模式以从字符串中查找所有出现的
2018
。您可以根据需要更改此模式。一个简单的例子是,如果我将模式更改为
stringregexpatern=@“\d+”,它将给我4作为输出。这是因为我的模式将匹配字符串中出现的所有数字。

您可以使用来处理此类情况。正则表达式为您提供了在字符串中进行模式匹配的良好灵活性。在您的例子中,我使用正则表达式为您准备了一个示例代码:

using System;
using System.Text.RegularExpressions;
                
public class Program
{
    public static void Main()
    {
        string str="zaeazeaze2018azeazeazeazeaze2018azezaazeazeaze4azeaze2018";
        string regexPattern = @"2018";
        int numberOfOccurence = Regex.Matches(str, regexPattern).Count;
        
        Console.WriteLine(numberOfOccurence);
        
    }
}
工作示例:


如果您注意到行
string regexpatern=@“2018”
,这将设置模式以从字符串中查找所有出现的
2018
。您可以根据需要更改此模式。一个简单的例子是,如果我将模式更改为
stringregexpatern=@“\d+”,它将给我4作为输出。这是因为我的模式将匹配字符串中所有出现的数字。

这可以通过使用正则表达式和以下内容来实现:

using System.Text.RegularExpressions;

public static int count(string fullString, string searchPattern)
{
    int i = Regex.Matches(fullString, searchPattern).Count;
    return i;
}
例如,以下内容将2作为int而不是字符串返回:

count("asdfasdfasfdfindmeasdfadfasdasdfasdffindmesadf","findme")

我发现这对于我的大多数用例来说已经足够快了。

这可以通过使用以下正则表达式来实现:

using System.Text.RegularExpressions;

public static int count(string fullString, string searchPattern)
{
    int i = Regex.Matches(fullString, searchPattern).Count;
    return i;
}
例如,以下内容将2作为int而不是字符串返回:

count("asdfasdfasfdfindmeasdfadfasdasdfasdffindmesadf","findme")


我发现这对于我的大多数用例来说已经足够快了。

k
是一个
char
。调试时,您可以很容易地发现这些错误。请学习如何调试您的程序。不,我声明K为字符串当
K
是字符串时,
line
则是字符,甚至更奇怪。我认为所有正则表达式解决方案都没有达到目的,一个适当的答案可能会解释出问题所在,一个包含循环的解决方案,以便OP知道循环解决方案的外观和涉及的算法,然后是一个正则表达式示例。OP可能还应该解释,如果这需要区分大小写,并且每行出现一次以上,我的意思是
是一个
字符
k
是一个
字符
。调试时,您可以很容易地发现这些错误。请学习如何调试您的程序。不,我声明K为字符串当
K
是字符串时,
line
则是字符,甚至更奇怪。我认为所有正则表达式解决方案都没有达到目的,一个适当的答案可能会解释出问题所在,一个包含循环的解决方案,以便OP知道循环解决方案的外观和涉及的算法,然后是一个正则表达式示例。OP可能还应该解释,如果这需要区分大小写,并且每行出现一次以上,我的意思是
是一个
字符
谢谢,但我不知道为什么我会收到一个错误,说“char”不包含索引,我认为这行在某些情况下是字符reason@xtool我做了更新。给你检查一下!我希望你能理解这个概念,并能实现它谢谢你,但我不知道为什么我会得到一个错误,说“char”不包含indexOf,我想这行是char的reason@xtool我做了更新。给你检查一下!我希望您能理解这个概念,并能实施它。非常感谢您的帮助,先生@我很乐意帮忙。如果您认为答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于将注意力集中在仍然没有答案的老年人身上。有关更多信息,请访问我们的stackoverflow.com/help/accepted-answer非常感谢您的帮助,先生@我很乐意帮忙。如果您认为答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于将注意力集中在仍然没有答案的老年人身上。有关更多信息,请查看我们的stackoverflow.com/help/accepted answer。由于
MatchCollection
ICollection
实现已经有了一个
Count
属性,因此不需要使用
.Cast()
来获取LINQ的
Count()
方法
.Count()
必须通过强制转换迭代器迭代整个集合。如果没有别的,这是不必要的冗长。但是,如果您将其放大,这将比其他直接使用
Count
属性的答案更快地停止“足够快”,尽管实际上,正则表达式匹配可能比迭代花费更大。这一点很好!我可能已经乘坐了林克宣传列车有点太多了哈