вычислите количество повторения символа в строке в c#

как я могу вычислить количество повторения символа в строке в c#? пример у меня есть sasysays количество повторения символа', равняется 4

5
задан kartal 24 May 2010 в 21:10
поделиться

6 ответов

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

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

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

int s = str.Count(c => c == 's');
16
ответ дан 18 December 2019 в 05:40
поделиться
s.Where(c => c == 's').Count()

если s - это строка, и вы ищете 's'

3
ответ дан 18 December 2019 в 05:40
поделиться
        string s = "sasysays ";
        List<char> list = s.ToList<char>();
        numberOfChar = list.Count<char>(c => c=='s');
1
ответ дан 18 December 2019 в 05:40
поделиться
for(int i=0; i < str.Length; i++) { 
    if(str[i] == myChar) {
        charCount++;
    }
}
2
ответ дан 18 December 2019 в 05:40
поделиться

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

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

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

7
ответ дан 18 December 2019 в 05:40
поделиться

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

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
ответ дан 18 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: