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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2017, 13:49   #1
Exort
 
Регистрация: 25.12.2016
Сообщений: 6
По умолчанию Регулярные выражения (C#)

Имеется текст со структурой «Фамилия И.О. – рост см – вес кг». Вывести на экран фамилии всех лиц, чей рост превышает n кг.
Код:
static void Main(string[] args)
        {
              Regex regex = new Regex(@"^([А-Я][а-я]+)\s+([А-Я])\.\s*([А-Я])\.\s+(\d+)\s+(\d+)$");
            string input = "Иванов И.И. 180 90" +
                           "Петров П.П. 190 97" +
                           "Сидоров С.С. 200 101";
            Console.WriteLine("Введите вес(n)=");
            int n = Convert.ToInt32(Console.ReadLine());
                foreach (var e in input.Split('\n'))
                {
                    Match match = regex.Match(input);
                    if (match.Success && int.Parse(match.Groups[5].Value) > n)
                        Console.WriteLine(match.Groups[1].Value);
            }
        }
Не работает. Как исправить?
Exort вне форума Ответить с цитированием
Старый 27.05.2017, 13:54   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Выкинуть регулярные выражения и просто разделить по пробелу )
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.05.2017, 14:43   #3
Exort
 
Регистрация: 25.12.2016
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Выкинуть регулярные выражения и просто разделить по пробелу )
Чего?
Exort вне форума Ответить с цитированием
Старый 27.05.2017, 15:02   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

.Split(' ')
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.05.2017, 15:16   #5
Exort
 
Регистрация: 25.12.2016
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
.Split(' ')
Это же ничего не меняет
Exort вне форума Ответить с цитированием
Старый 27.05.2017, 15:28   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что не меняет?

И смотрите значения переменных, "+" это конкатенация, а не символ конца строки.

Код:
            string input = 
@"Иванов И.И. 180 90
Петров П.П. 190 97
Сидоров С.С. 200 101";
            int minWeight = 95;
            foreach (var line in input.Split(new []{'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries))
            {
                var fields = line.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries);
                int weight = int.Parse(fields[3]);
                if (weight > minWeight)
                {
                    string lastName = fields[0];
                    Console.WriteLine(lastName);
                }
            }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.05.2017, 15:37   #7
Exort
 
Регистрация: 25.12.2016
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что не меняет?

И смотрите значения переменных, "+" это конкатенация, а не символ конца строки.

Код:
            string input = 
@"Иванов И.И. 180 90
Петров П.П. 190 97
Сидоров С.С. 200 101";
            int minWeight = 95;
            foreach (var line in input.Split(new []{'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries))
            {
                var fields = line.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries);
                int weight = int.Parse(fields[3]);
                if (weight > minWeight)
                {
                    string lastName = fields[0];
                    Console.WriteLine(lastName);
                }
            }
Спасибо
Exort вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения Jadore ASP.NET 0 23.05.2013 00:42
Регулярные выражения Артём555 C# (си шарп) 4 28.04.2013 14:02
Регулярные выражения 7flash Microsoft Office Word 1 25.02.2013 19:51
регулярные выражения vvsh PHP 3 22.04.2011 17:09
регулярные выражения Dimarik PHP 10 09.12.2010 21:19