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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 01:04   #1
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
Вопрос Парсинг строки. SubString не правильно работает.

Здравствуйте!
Имеются строки вида:

23:45 СообщениеСон) ПН: да ВТ: нет СР: да ЧТ: да ПТ: нет СБ: да ВС: да
22:45 СообщениеПомыть посуду) ПН: да ВТ: нет СР: да ЧТ: да ПТ: нет СБ: да ВС: да

Нужно их попарсить и вывести в MessageBox. Эти строки хранятся в ListBox'е. Вот код:

Код:
 int i = 0;
            int h, m;
            string message;
            string linepars, pars2;
            bool pn, vt, sr, cht, pt, sb, vs;
            while (i <= List.Items.Count - 1)
            {
                linepars = Convert.ToString(List.Items[i]);
                h = Convert.ToInt32(linepars.Substring(0, linepars.IndexOf(":")));
                m = Convert.ToInt32(linepars.Substring(linepars.IndexOf(":") + 1, linepars.IndexOf(":") + 1));
                message = linepars.Substring(linepars.IndexOf("Сообщение:(") + 11, linepars.IndexOf(") ПН:")-5);
                pars2 = linepars.Substring(linepars.IndexOf("ПН:")+3, linepars.IndexOf(" ВТ:"));
                MessageBox.Show(h+" "+m+" "+message+" "+pars2);
                i++;
            }
По идее в мессадже бокс первая строка должна отобразится так:
23 45 Сон Да

Но получаю я следующее:
23 45 Сон) ПН: да ВТ да ВТ:нет СР: да ЧТ: да П

Есть нубский вопрос: что не так?

ЗЫ
в с# я начинающий просьба не бить
Crivel вне форума Ответить с цитированием
Старый 12.03.2011, 14:20   #2
BlackSwan
Новичок
Джуниор
 
Регистрация: 12.03.2011
Сообщений: 1
По умолчанию

Ну я, например, бить не буду, но код не компилируется Вы где-то ошиблись выкладывая код...

Вот тут непонятно что Вы имели ввиду:
Код:
int i = 0;
            int h, m;
            string message;
            string linepars, pars2;
            bool pn, vt, sr, cht, pt, sb, vs;
            while (i <= List.Items.Count - 1)
            {
                linepars = Convert.ToString(List.Items[i]);
                h = Convert.ToInt32(linepars.Substring(0, linepars.IndexOf(":")));
                m = Convert.ToInt32(linepars.Substring(linepars.IndexOf(":") + 1, linepars.IndexOf(":") + 1));
                message = linepars.Substring(linepars.IndexOf("Сообщение:(") + 11, linepars.IndexOf(") ПН:") - 5);
                pars2 = linepars.Substring(linepars.IndexOf("ПН:") + 3, linepars.IndexOf(" ВТ:"));
                MessageBox.Show(h + " " + m + " " + message + " " + pars2);
                i++;
            }
Но а по сути Ваше вопроса: Метод Substring() принимает точку начала и длину подстроки! А как я понял, Вы отправляете в неё координаты начала и конца подстроки
BlackSwan вне форума Ответить с цитированием
Старый 13.03.2011, 15:49   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

А есть еще метод Split, который разбивает строку на массив слов по разделителю...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг строки grafgrial Помощь студентам 14 17.01.2011 14:34
Не правильно (или правильно?) работает позиционирование в WebKit mutabor HTML и CSS 5 09.12.2010 09:54
Парсинг следующей строки Fok Общие вопросы Delphi 4 12.09.2010 17:26
Substring не работает ! RIO Общие вопросы .NET 2 31.05.2009 12:55
Парсинг строки beemoto Общие вопросы Delphi 18 12.04.2009 18:52