как я могу вычислить количество повторения символа в строке в c#? пример у меня есть sasysays количество повторения символа', равняется 4
Вот версия с использованием LINQ (написанная с использованием методов расширения):
int s = str.Where(c => c == 's').Count();
Здесь используется тот факт, что строка
равна IEnumerable
, поэтому мы можем отфильтровать все символы, которые равны тому, который вы ищете, а затем подсчитать количество выбранных элементов. Фактически, вы можете написать только это (потому что метод Count
позволяет вам указать предикат, который должен выполняться для всех подсчитываемых элементов):
int s = str.Count(c => c == 's');
s.Where(c => c == 's').Count()
если s - это строка, и вы ищете 's'
string s = "sasysays ";
List<char> list = s.ToList<char>();
numberOfChar = list.Count<char>(c => c=='s');
for(int i=0; i < str.Length; i++) {
if(str[i] == myChar) {
charCount++;
}
}
Другой вариант:
int numberOfS = str.Count('s'.Equals);
Это немного назад - 's'
является символом, и каждый символ имеет метод Equals
, который можно использовать в качестве аргумента для Count
.
Конечно, это менее гибко, чем c => c == 's'
- вы не можете тривиально изменить его на сложное условие.
Более общее решение - подсчитать количество вхождений всех символов :
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']);