Разбиение строки на группы
От: Аноним  
Дата: 09.07.13 17:44
Оценка:
Привет всем,
Есть задача разбить строку символов на лист строк по определенному правилу.
На входе есть String, на выходе должен быть List<String>. Заморочка в разбиении.
Строка представляет собой набор символов типа:
ABCD###AB###EFDG#GGG##KKKK
где # — некоторый служебный символ. Строку нужно разбить на участки где нет служебного символа, и где есть только служебные символы. То есть в случае с этим примеров разбиение должно быть такое:
ABCD
###
AB
###
EFGD
#
GGG
##
KKKK

Вроде казалось плёвой задачкой, но что-то я голову сломал об неё. Можно конечно какими-то монструозными if-ами её парсить, но есть ощущение, что должен быть способ попроще. Помогите идеями please, а то творческий тупик какой-то
Re: Разбиение строки на группы
От: QrystaL Украина  
Дата: 09.07.13 18:06
Оценка: -1
Здравствуйте, Аноним, Вы писали:
А>Привет всем,
А>Есть задача разбить строку символов на лист строк по определенному правилу.

static void Main()
{
    String input = "ABCD###AB###EFDG#GGG##KKKK";
    int i = 0;
    bool current = false;
    var output = input
        .GroupBy(c =>
            {
                if (current != IsSpecialChar(c))
                {
                    i++;
                    current = !current;
                }
                return i;
            })
        .Select(String.Concat<Char>)
        .ToArray();
}

static bool IsSpecialChar(Char c)
{
    return c == '#';
}
Re: Разбиение строки на группы
От: Аноним  
Дата: 09.07.13 18:17
Оценка: +1
регулярками я думаю можно

      string input = "ABCD###AB###EFDG#GGG##KKKK";
      string pattern = "(?:(#{1,}))";        
      string[] result = Regex.Split(input, pattern);
      List<string> output = new List<string>(result);
Re[2]: Разбиение строки на группы
От: matumba  
Дата: 10.07.13 08:02
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>регулярками я думаю можно

А> string[] result = Regex.Split(input, pattern);
А> List<string> output = new List<string>(result);

Неправильно — где в списке разделители?

> Есть задача разбить строку символов на лист строк


Хвосты по информатике штоль? Задача — тривиальная, почему она вызывает такие вопросы? Да, можно if'ами, можно на конечных автоматах, способов — мильён. Любой из них хорош по-своему, даже этот ужасный LINQ выше
Re[3]: Разбиение строки на группы
От: BrainSlug Израиль  
Дата: 10.07.13 08:07
Оценка:
M>Неправильно — где в списке разделители?
а с чего ты взял, что их там нет? прочитай что ли http://msdn.microsoft.com/en-us/library/ze12yx1d.aspx

M> Хвосты по информатике штоль? Задача — тривиальная, почему она вызывает такие вопросы? Да, можно if'ами, можно на конечных автоматах, способов — мильён. Любой из них хорош по-своему, даже этот ужасный LINQ выше

это к кому вопрос вообще? matumba у Анонимов рядом стоит порядковый номер, по которому можно с некоторой вероятностью их друг от друга отличать. Так, что задавай вопрос топик стартеру.
.
Re[4]: Разбиение строки на группы
От: matumba  
Дата: 10.07.13 08:47
Оценка: -1
Здравствуйте, BrainSlug, Вы писали:

M>>Неправильно — где в списке разделители?

BS>а с чего ты взял, что их там нет?

Да, такие "тонкости" я не знал. Кстати, почему такой многосимвольный регэкс? Не достаточно ли будет "(#+)"?

BS>это к кому вопрос вообще?


К топикстартеру. А ты чё взбеленился-то? С утра не дали чтоль? Из контекста всё понятно, конфликт раздувать незачем. Горячий русский парень....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.