Раздел 2.2: Подсчет отдельных символов Перевод
Zeba
26 Октября
Поделиться в соцсетях
Пожаловаться модератору
Если вам нужно подсчитать отдельные символы, то, по причинам, описанным в разделе Remarks, вы не можете просто использовать свойство
свойство Length, потому что это длина массива System.Char, которые являются не символами, а кодовыми единицами (не
кодовые точки Юникода или графемы). Если, например, просто написать text.Distinct().Count(), то вы получите
неправильный результат, правильный код:
int distinctCharactersCount = text.EnumerateCharacters().Count();
Еще один шаг — подсчитать количество вхождений каждого символа, если производительность не является проблемой, вы можете просто сделать это
вот так (в данном примере независимо от случая):
var frequencies = text.EnumerateCharacters()
.GroupBy(x => x, StringComparer.CurrentCultureIgnoreCase)
.Select(x => new { Character = x.Key, Count = x.Count() };
18