计算c#中字符串中字符的重复次数

时间:2010-05-24 21:10:07

标签: c# string

如何计算c#中字符串中字符的重复次数? 例如我有sasysays重复的字符''是4

7 个答案:

答案 0 :(得分:16)

这是使用LINQ的版本(使用扩展方法编写):

int s = str.Where(c => c == 's').Count();

这使用stringIEnumerable<char>的事实,因此我们可以过滤所有与您要查找的字符相等的字符,然后计算所选元素的数量。实际上,你可以这样写(因为Count方法允许你指定一个应该包含所有计数元素的谓词):

int s = str.Count(c => c == 's');

答案 1 :(得分:7)

另一种选择是:

int numberOfS = str.Count('s'.Equals);

这有点倒退 - 's'是一个char,每个char都有一个Equals方法,可以用作Count的参数。
当然,这不如c => c == 's'那么灵活 - 你不能轻易地把它变成一个复杂的条件。

答案 2 :(得分:3)

s.Where(c => c == 's').Count()

给定s是一个字符串,你正在寻找's'

答案 3 :(得分:2)

for(int i=0; i < str.Length; i++) { 
    if(str[i] == myChar) {
        charCount++;
    }
}

答案 4 :(得分:2)

更通用的解决方案,用于计算所有字符的出现次数:

var charFrequencies = new Dictionary<char, int>();
foreach(char c in s)
{
    int n;
    charFrequencies.TryGetValue(c, out n);
    n++;
    charFrequencies[c] = n;
}

Console.WriteLine("There are {0} instances of 's' in the string", charFrequencies['s']);

答案 5 :(得分:1)

        string s = "sasysays ";
        List<char> list = s.ToList<char>();
        numberOfChar = list.Count<char>(c => c=='s');

答案 6 :(得分:0)

试试这段代码:

namespace Count_char
{
    class Program
  {
    static void Main(string[] args)
    {
        string s1 = Convert.ToString(Console.ReadLine());
        for (int i = 97; i < 123; i++)
        {
            string s2 = Convert.ToString(Convert.ToChar(i));

            CountStringOccurrences(s1, s2);
        }


        Console.ReadLine();
    }
    public static void CountStringOccurrences(string text, string pattern)
    {

        int count = 0;
        int i = 0;
        while ((i = text.IndexOf(pattern, i)) != -1)
        {
            i += pattern.Length;
            count++;

        }
        if (count != 0)
        {
            Console.WriteLine("{0}-->{1}", pattern, count);
        }

    }
}

}