C# Дан текст, в котором имеются цифры.а) Найти их сумму

Есть задание : Дан текст, в котором имеются цифры.а) Найти их сумму.

Вот мой код :

        string str7 = "На 3 минуте матча был забит гол игроком под номером 7, это его 4 гол в карьере.";
        Console.WriteLine(str7);
        int sum = 0;
        for (int i = 0; i < str7.Length; i++)
        {

            if (char.IsDigit(str7[i]))
            {
                Convert.ToInt32(str7[i]);
                sum = +str7[i];
                
            }
        }
        Console.WriteLine($"Сумма = {sum}");

В числе сумма выбивает число 52 . Почему так?


Ответы (1 шт):

Автор решения: Igor Borzenkov

В качестве примера решения вашей задачи код:

    string str7 = "На 3 минуте матча был забит гол игроком под номером 7, это его 4 гол в карьере.";
    Console.WriteLine(str7);
    int sum = 0;
    foreach (char ch in str7)
    {
        if (int.TryParse(ch.ToString(), out int digit))
            sum += digit;
    }
    Console.WriteLine($"Сумма = {sum}");

Вы в вашем примере, используя метод Convert.ToInt32(ch):

  • Получаете код символа в таблице ASCII, а не само значение цифры;
  • Не присваиваете результат работы метода и он просто теряется;
  • Используемая вами лексема "= +" в строке sum = +str7[i];, означает "присвой в переменную sum значение кода символа str7[i]". Вероятно, вы хотели написать sum += str7[i];.
→ Ссылка