Member 12873209 Ответов: 1

С#. Как написать функцию, которая может искать символ в строке и возвращать количество вхождений?


Привет! Мне нужна функция, которая ищет строку и находит количество вхождений данного символа в этой заданной строке. Вы можете помочь ? спасибо.

Я попробовал этот код ниже, и он просто дает все символы внутри строки ... и мой учитель сказал, что это слишком сложно, и мне нужно упростить его. И, может быть, мне следует определить строку и символ и использовать оператор if else ... и я не могу придумать что-то еще ... так что, пожалуйста, любые идеи будут приветствоваться.

Извините, если вы не понимаете этого достаточно хорошо, английский-мой второй язык, и я старался выражаться как можно яснее.

Что я уже пробовал:

namespace ConsoleApplication5
{
    class ex3
    {
        static void Main(string[] args)
        {
            string str = "aabb12cc";
            var count = CharacterCount.Count(str);
            foreach (var character in count)
            {
                Console.WriteLine("{0}-{1}", character.Key, character.Value);
            }
        }

    }
    class CharacterCount
    {
        public static SortedDictionary<char, int=""> Count(string stringToCount)
        {
            SortedDictionary<char, int=""> characterCount = new SortedDictionary<char, int="">();
            foreach (var character in stringToCount)
            {
                int counter = 0;
                characterCount.TryGetValue(character, out counter);
                characterCount[character] = counter + 1;
            }
            return characterCount;
        }
    }
}

PIEBALDconsult

Почему нет
characterCount [character]++
?

Я бы добавил
если (! characterCount.ContainsKey(character)) characterCount [ character ] = 0

И я никогда не использую var, что здесь излишне.

1 Ответов

Рейтинг:
8

Wendelius

Первое, что может упростить ваш код, - это тот факт, что строка представляет собой массив символов. Например, попробуйте, что происходит со следующим кодом

string str = "aabb12cc";
Console.WriteLine(str[3]);

Сказав это, вы можете иметь один цикл, проходящий через все символы, и если символ желателен, то увеличьте счетчик на единицу. Простой цикл может быть для (ссылки на C# )[^] цикл, начинающийся с 0 и заканчивающийся в конце строки.


Member 12873209

Спасибо. Мне удалось найти решение. Вы были правы, я использовал для.

Wendelius

Всегда пожалуйста :)