Раздел 2.2: Подсчет отдельных символов Перевод

Zeba 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() };
Для ответа вы можете авторизоваться