Перезапустите индексирование Regex на основе содержимого строки - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь загрузить текстовый файл в C # ContentBox и проиндексировать строки.

В настоящее время текстовый файл содержит

Data
Company
Phone
Email
Company
Phone
Email

В настоящее время я настроил индекс Refex для нумерации всехстроки в текстовом файле при загрузке.

string content = File.ReadAllText(file);

content = Regex.Replace(content, @"^\s*$\n|\r", string.Empty, RegexOptions.Multiline).TrimEnd();
var index = 0;
content = Regex.Replace(content, "^", (Match m) => (index++).ToString().PadLeft(4, '0') + " ", RegexOptions.Multiline);
ContentBox.Text = content;

Это выводит

0000 Data
0001 Company
0002 Phone
0003 Email
0004 Company
0005 Phone
0006 Email

Что мне нужно сделать, это иметь возможность вывести следующее в ContentBox.

0000 Data
0001 Company
0002 Phone
0003 Email
0001 Company
0002 Phone
0003 Email

Может кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 24 мая 2019

Ваше использование Regex не требуется.Этот код должен дать вам нужное вам направление:

string[] content =
    File
        .ReadAllText(file)
        .Select((x, n) => $"{(n == 0 ? 0 : (n - 1) % 3 + 1):0000} {x}")
        .ToArray();

Вот пример того, как это работает:

    string[] source = @"Data
ABC Bakery
0123
abc@bakery.com
DEF Pets
0124
def@pets.com".Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

    string[] content =
        source
            .Select((x, n) => $"{(n == 0 ? 0 : (n - 1) % 3 + 1):0000} {x}")
            .ToArray();

Это дает:

0000 Data 
0001 ABC Bakery 
0002 0123 
0003 abc@bakery.com 
0001 DEF Pets 
0002 0124 
0003 def@pets.com 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...