Регулярные выражения и LINQ C#

777
12 июня 2017, 20:09

Привет всем, не могу сделать разбиение строки на подстроки с помощью регулярных выражений, как это требуется. Нужно разбить строку на подстроки длины 2 или меньше, начиная с конца строки и занести подстроки в List. Есть код:

value = (from Match splitPart in Regex.Matches(number, @".{1," + 2 + "}") select Convert.ToInt32(splitPart.Value)).ToList();

но он делит с начала строки, например строку 12345 он разобьет как 12 34 5, а мне необходимо 1 23 45, заранее спасибо.

Answer 1

Проблема решена) Сделал так:

value = (from Match splitPart in Regex.Matches(unsig, @".{1," + 2 + "}", RegexOptions.RightToLeft) select Convert.ToInt32(splitPart.Value)).ToList();

если кому будет интересно.

Answer 2

А почему бы это не сделать через банальный цикл вместо регулярки?

List<int> lst = new List<int>();
for (int i = str.Length-1; i>0; i-=2)
{
    string tmp;
    if (i!=1)
    {
        tmp = str.Substring(i-2,2);
    }
    else
    {
        tmp = str.Substring(0,1);
    }
    var tmpInt = Convert.ToInt32(tmp);
    lst.Add(tmpInt);
}

хоть кода и больше, скорее всего это решение будет читабельнее и быстрее. Ведь это простой перебор, а не серия регекс сравнений.

(код не проверял)

Answer 3

Можно сначала проверить длину и если длина нечетное число, спереди добавить 0:

if (number.Length % 2 == 1) number = "0" + number;
READ ALSO
Навигация в страничном приложении WPF

Навигация в страничном приложении WPF

Здравствуйте! У меня есть страничное приложение WPF, навигация в котором организована в виде бокового меню, основанного на TreeViewВ каждом TreeViewItem

397
Как на C# скачать новую версию программы с GitHub?

Как на C# скачать новую версию программы с GitHub?

Нужно автоматизировать обновление кода на сервере, что б я изменял код у себя на компьютере, затем залил на GitHub, а затем подал команду серверу...

368
Помогите дописать запрос LINQ

Помогите дописать запрос LINQ

Если я правильно понял вопрос, то вам должно подойти такое:

247