Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2012, 20:42   #1
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию Поиск символов в строке

Всем привет! Ребята, не получается задача. Необходимо подсчитать количество букв в строке в верхнем регистре, в нижнем регистре и количество цифр.
Я написал вот так, но не работает:

Код:
static public void TaskFive()
            {
 
                string alphabet = "АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
                string values = "0123456789";
                Console.WriteLine("Введите строку");
                string taskfive = Convert.ToString(Console.ReadLine());
                Console.WriteLine("Общее количество символов в строке = " + taskfive.Count());
                int i = 0, counterBigvalues = 0, counternumber = 0;
                while (i <= taskfive.Length)
                {
 
                    if (taskfive.IndexOfAny(alphabet.ToCharArray(), i) >= 0)
                    {
                        counterBigvalues += 1;
                    }
                    if (taskfive.IndexOfAny(values.ToCharArray(), i) >= 0)
                    {
                        counternumber += 1;
                    }
 
                    ++i;
                }
                Console.WriteLine
                    ("Количество букв  в верхнем регистре = " + counterBigvalues + "\nКоличество букв  в нижнем регистре = " + (taskfive.Length - counterBigvalues) + "\nКоличество цифр = " + counternumber);
Вероятно всего ошибка в поиске:
Код:
while (i <= taskfive.Length)
                {
 
                    if (taskfive.IndexOfAny(alphabet.ToCharArray(), i) >= 0)
                    {
                        counterBigvalues += 1;
                    }
                    if (taskfive.IndexOfAny(values.ToCharArray(), i) >= 0)
                    {
                        counternumber += 1;
                    }
 
                    ++i;
                }
Описание метода

Код:
IndexOfAny
брал в MSDN
Заранее благодарен.
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 10.06.2012, 21:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

LINQ мегарулит
Код:
            string s = "gfsggvytbygGQVVGH67";
             Console.WriteLine(s.Count(c => c >= 'a' && c <= 'z'));
             Console.WriteLine(s.Count(c => c >= 'A' && c <= 'Z'));
             Console.WriteLine(s.Count(c =>c>='0' && c<='9'));
Хорошо что его нам предоставили в распоряжение. Как раз для таких задач как твоя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2012, 21:23   #3
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Спасибо, Виталик! Только мне непонятна запись
Код:
c >=
объясни, пжлста
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 10.06.2012, 22:20   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Лямда выражение...
Так без предварительной подготовки не расскажешь, я и сам не сразу вьехал...
Смыл примерно такой
В параметр функции передается две части:
1) Список параметров-переменных
2) Само тело анонимной функции
Разделяется это все знаком =>

Сам метод вызывает эту анонимную функцию, передавая в ее параметры значения.
В данном случае метод Count будет передавать значение очередного символа в переменку-параметр "с", которая будет участвовать (на что указывает =>) в выражении c >= 'a' && c <= 'z'

Если по факту выражение дает истину то Count увеличит результирующий счетчик, иначе нет.
Соответственно c >= следует читать как: Если очередной символ строки больше или равен... Ну и так далее.
Я понятно изъясняюсь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2012, 22:28   #5
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Я понял, спасибо. Буду так делать.
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск символов в строке. Удалить строку, если их нет gauss_gauss Microsoft Office Word 4 24.03.2012 14:37
Проверка символов в строке Lauri Общие вопросы Delphi 2 17.03.2012 23:11
поиск символов в строке и вывод их номера на экран Bobina Общие вопросы C/C++ 2 02.11.2010 14:51
подсчёт символов с в строке Proger_1 Общие вопросы C/C++ 10 13.03.2010 20:42
замена символов в строке euhenia Помощь студентам 3 30.11.2009 20:59