Здравствуйте, Аноним, Вы писали:
А>Привет всем,
А>Есть задача разбить строку символов на лист строк по определенному правилу.
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 == '#';
}
регулярками я думаю можно
string input = "ABCD###AB###EFDG#GGG##KKKK";
string pattern = "(?:(#{1,}))";
string[] result = Regex.Split(input, pattern);
List<string> output = new List<string>(result);
Здравствуйте, Аноним, Вы писали:
А>регулярками я думаю можно
А> string[] result = Regex.Split(input, pattern);
А> List<string> output = new List<string>(result);
Неправильно — где в списке разделители?
> Есть задача разбить строку символов на лист строк
Хвосты по информатике штоль?
Задача — тривиальная, почему она вызывает такие вопросы? Да, можно if'ами, можно на конечных автоматах, способов — мильён. Любой из них хорош по-своему, даже этот ужасный LINQ выше
Здравствуйте, BrainSlug, Вы писали:
M>>Неправильно — где в списке разделители?
BS>а с чего ты взял, что их там нет?
Да, такие "тонкости" я не знал. Кстати, почему такой многосимвольный регэкс? Не достаточно ли будет "(#+)"?
BS>это к кому вопрос вообще?
К топикстартеру. А ты чё взбеленился-то? С утра не дали чтоль?
Из контекста всё понятно, конфликт раздувать незачем. Горячий русский парень....
Привет всем,
Есть задача разбить строку символов на лист строк по определенному правилу.
На входе есть String, на выходе должен быть List<String>. Заморочка в разбиении.
Строка представляет собой набор символов типа:
ABCD###AB###EFDG#GGG##KKKK
где # — некоторый служебный символ. Строку нужно разбить на участки где нет служебного символа, и где есть только служебные символы. То есть в случае с этим примеров разбиение должно быть такое:
ABCD
###
AB
###
EFGD
#
GGG
##
KKKK
Вроде казалось плёвой задачкой, но что-то я голову сломал об неё. Можно конечно какими-то монструозными if-ами её парсить, но есть ощущение, что должен быть способ попроще. Помогите идеями please, а то творческий тупик какой-то
M>Неправильно — где в списке разделители?
а с чего ты взял, что их там нет? прочитай что ли
http://msdn.microsoft.com/en-us/library/ze12yx1d.aspx
M> Хвосты по информатике штоль? Задача — тривиальная, почему она вызывает такие вопросы? Да, можно if'ами, можно на конечных автоматах, способов — мильён. Любой из них хорош по-своему, даже этот ужасный LINQ выше
это к кому вопрос вообще? matumba у Анонимов рядом стоит порядковый номер, по которому можно с некоторой вероятностью их друг от друга отличать. Так, что задавай вопрос топик стартеру.