Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Surround

Ветеран


Сообщения: 908
Благодарности: 20

Профиль | Отправить PM | Цитировать


спасибо за идею!
я же реализовал это так:
Код: Выделить весь код
//------разбирает форматированную строку в массив
        private void ParseInt(string ids)
        {
            list_id = new List<int>();
            //ids вида:[12-15,24-29,40]
            string[] SplFirst;
            string[] SplSecond;
            SplFirst = ids.Split(',');//получили массив SplFirst вида: [12-15];[24-29];[40]
            foreach (string f in SplFirst)
            {
                SplSecond = f.Split('-');//здесь массив SplSecond принимает значения: [12];[15] затем [24];[29] затем [40]
                if (SplSecond.Length > 1)//то есть получили парный элемент (12-15)
                {
                    int a = Convert.ToInt32(SplSecond[0]);//начало диапазона
                    int b = Convert.ToInt32(SplSecond[1]);//его конец
                    if (a > b)//a > b - то просто поменяем их местами
                    {
                        int buf = b;
                        b = a;
                        a = buf;
                    }
                    for (int i = a; i <= b; i++)
                    {
                        list_id.Add(i);//добавлем новый элемент в список
                    }
                }
                else//если элемент одиночный - то просто добавляем его
                {
                    int c = Convert.ToInt32(SplSecond[0]);
                    list_id.Add(c);
                }
            }
            //для отладки
            /*foreach (int n in list_id)
            {
                MessageBox.Show(n.ToString());
            }*/
        }

Отправлено: 16:51, 17-03-2008 | #3