Я предлагаю использовать String.Equals
перегрузку с StringComparison
, указанным для лучшей производительности.
var separators = new [] { ' ', ',', '.', '?', '!', ';', ':', '\"' };
var words = sentence.Split (separators);
var matches = words.Count (w =>
w.Equals (searchedWord, StringComparison.OrdinalIgnoreCase));
var percentage = matches / (float) words.Count;
Обратите внимание, что percentage
будет float
, например 0.5
для 50%.
Вы можете отформатировать его для отображения, используя перегрузку ToString
:
var formatted = percentage.ToString ("P0"); // 0.1234 => 12 %
Вы также можете изменить спецификатор формата для отображения десятичных разрядов:
var formatted = percentage.ToString ("P2"); // 0.1234 => 12.34 %
Имейте в виду, что этот метод неэффективендля больших строк, потому что он создает экземпляр строки для каждого из найденных слов.Возможно, вы захотите взять StringReader
и прочитать слово за словом вручную.