如何检查一个字符串在另一个字符串中存在多少次

时间:2019-03-29 22:15:48

标签: c#

我想查看一个字符串中有多少次字符串出现。例如,我想查看此段中2018年发生的次数:

zaeazeaze2018 azeazeazeazeaze2018azezaaze azeaze4azeaze2018

在这种情况下,它发生了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();
}

4 个答案:

答案 0 :(得分:1)

使用此:

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

答案 1 :(得分:1)

您可以使用Regular Expressions处理此类情况。正则表达式为您在字符串中进行模式匹配提供了很好的灵活性。对于您而言,我已经使用正则表达式为您准备了示例代码:

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);

    }
}

工作示例:https://dotnetfiddle.net/PGgbm8

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

答案 2 :(得分:1)

这可以使用带有以下内容的正则表达式来实现:

using System.Text.RegularExpressions;

public static int count(string fullString, string searchPattern)
{
    int i = Regex.Matches(fullString, searchPattern).Count;
    return i;
}

例如,以下代码以int而不是字符串的形式返回2:

count("asdfasdfasfdfindmeasdfadfasdasdfasdffindmesadf","findme")

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

答案 3 :(得分:-1)

str是您的String方法中的count 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()