рассчитать количество повторений символа в строке в c # - PullRequest
5 голосов
/ 25 мая 2010

Как я могу рассчитать количество повторений символов в строке в C #? Например, у меня есть sasysays число повторений символа 's' составляет 4

Ответы [ 7 ]

16 голосов
/ 25 мая 2010

Вот версия с использованием LINQ (написана с использованием методов расширения):

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

При этом используется тот факт, что string равен IEnumerable<char>, поэтому мы можем отфильтровать все символы, которые соответствуют искомому, и затем подсчитать количество выбранных элементов. Фактически, вы можете написать только это (потому что метод Count позволяет вам указать предикат, который должен храниться для всех подсчитанных элементов):

int s = str.Count(c => c == 's');
7 голосов
/ 25 мая 2010

Другой вариант:

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

Это немного задом наперед - 's' - это символ, и каждый символ имеет метод Equals, который можно использовать в качестве аргумента для Count.
Конечно, это менее гибко, чем c => c == 's' - вы не можете тривиально изменить его на сложное условие.

3 голосов
/ 25 мая 2010
s.Where(c => c == 's').Count()

данный s - строка, и вы ищете 's'

2 голосов
/ 25 мая 2010

Более общее решение для подсчета количества вхождений всех символов:

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']);
2 голосов
/ 25 мая 2010
for(int i=0; i < str.Length; i++) { 
    if(str[i] == myChar) {
        charCount++;
    }
}
1 голос
/ 25 мая 2010
        string s = "sasysays ";
        List<char> list = s.ToList<char>();
        numberOfChar = list.Count<char>(c => c=='s');
0 голосов
/ 24 августа 2013

Попробуйте этот код:

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

    }
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...