Подсчитать количество символов в тексте и заменить их - C#
Формулировка задачи:
Как реализовать код, который считывает кол-во символов в тексте.
И чтобы была ВОЗМОЖНОСТЬ ЗАМЕНИТЬ символы, а именно: находим символ, к примеру, который встречается макс кол-во раз, допустим "н" и заменяем его, допустим на символ 'о'
Что-то наподобие такой логики:
ЕСЛИ ('Н' встречается макс. кол-о раз в тексте) то
заменить все 'Н' в тексте на 'О'
ИНАЧЕ (ищи другой символ с макс. кол-вом)
Решение задачи: «Подсчитать количество символов в тексте и заменить их»
textual
Листинг программы
static void Main(string[] args)
{
string text = "Абвааа";
char c = 'О'; //на что меняем
var fc = FrequencyCharacters(text);
double max_p = 0;
char max_char = '0';
for (int i = 0; i < fc.Length; i++)
{
if (fc[i] > max_p)
{
max_p = fc[i];
max_char = (char)('А' + i);
}
}
Console.WriteLine("Исходный текст: {0}\n\r", text.ToUpper());
Console.WriteLine("Самы частый символ: {0} - {1:P}\n\r", max_char, max_p);
Console.WriteLine("После замены \"{0}\" на \"{1}\" : {2}", max_char, c, text.ToUpper().Replace(max_char, c).ToUpper());
Console.ReadKey();
}
static double[] FrequencyCharacters(string text)
{
var res = new double['Я' - 'А' + 1];
var length = text.Length;
foreach (var c in text.ToUpper())
{
if ((c >= 'А') && (c <= 'Я')) res[c - 'А']++;
}
for (int i = 0; i < res.Length; i++)
{
res[i] /= length;
}
return res;
}