Чтение строки в форматированном виде с использованием регулярных выражений и c # - PullRequest
0 голосов
/ 09 мая 2018

Я захватываю экран мэйнфрейма, используя c #, и я должен прочитать метки, соответствующие области ввода текста с экрана. В настоящее время я читаю его из захваченного изображения с помощью плагина tesseract ocr , он возвращает строку, я хочу разбить эту строку в соответствии с некоторыми символами в нем. Символы следующие.

{ '@', '<', '>', '=', '$', '%', '&' }

и для разбиения образца строки показано ниже

first name => saran    address @> my address

Любой способ разбить эту строку, используя регулярное выражение в качестве следующего формата для массива

[0]: "first name"
[1]: "=> saran" 
[2]: "address" 
[3]: "@> my address"

1 Ответ

0 голосов
/ 09 мая 2018

Это очень близко (но не с использованием Regex):

char[] splitters = new[] { '@', '<', '>', '=', '$', '%', '&' };

string text = "first name => saran    address @> my address";

string[] results =
    text
        .Aggregate(new List<List<char>>() { new List<char>() }, (a, c) =>
        {
            var l = a.Last();
            if (splitters.Contains(c) && !l.All(x => splitters.Contains(x)))
            {
                l = new List<char>() { c };
                a.Add(l);
            }
            else
            {
                l.Add(c);
            }
            return a;
        })
        .Select(x => new string(x.ToArray()))
        .ToArray();

В вашем описании просто нет ничего о том, как разделить "saran address". Кроме этого это проверено и производит это:

first name  
=> saran    address  
@> my address 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...