anabeth4 Ответов: 1

Как использовать несколько регулярных выражений в методе , C#


Я хочу использовать несколько регулярных выражений для своего приложения, прочитав все строки из исходного текстового файла, записывает только строки, содержащие данные для студента-ов.После этого я хочу также удалить некоторые символы и разделить: (член 12569-студент - 12*01*2006) в 5 полей, как показано ниже:

входной текстовый файл
Форма|01; 23_anna - участник 12569 является студентом - 12*01*2006
Форма|02; 17_smith_ член 12570 является учителем - 13*01*2007
Форма|03; 12_ben_ член 12571 является студентом - 14*01*2007

что печатается в выходном файле до сих пор:
Форма|01; 23_anna - участник 12569 является студентом - 12*01*2006
Форма|03; 12_ben_ член 12571 является студентом - 14*01*2007

Выход, который я хочу:
Форма 01 Анна 12569 студентка 12 01 2006
Форма 03 Бен 12571 студент 14 01 2007

Что я уже пробовал:

Файл StreamReader = новый StreamReader(inputfilepath);
List<string> student = новый список<string>();
в то время как (файл.EndOfStream != true)
{
s = файл.Линия чтения();
Совпадение m = регулярное выражение.Совпадение(s, "(?<=студент)(.)+");
если (m.успех)
{

неактивный.Добавить(ы);

}

}


используя (модулю записи StreamWriter писатель = новая модулю записи StreamWriter(outputfilepath))
{

foreach (строка l в student)

{



писатель.WriteLine(l);
//л = л.Заменить("-", "").Заменить(";", "").Заменить("_", "").Заменить("|", "");

1 Ответов

Рейтинг:
0

OriginalGriff

Вы можете сделать это в одном регулярном выражении:

private Regex find = new Regex(@"^(.+?)(?:\|)(\d+)(?:.+?_)(.+?)(?:[_-] Member ?)(\d+)(?:.+?)(student)(?:.+?)(\d\d).(\d\d).(\d\d\d\d)$", RegexOptions.Multiline);
private void MyButton_Click(object sender, EventArgs e)
    {
    string sample = "Form|01; 23_anna- Member 12569 is student - 12*01*2006\nForm|02; 17_smith_ Member 12570 is teacher - 13*01*2007\nForm|03; 12_ben_ Member 12571 is student - 14*01*2007";
    MatchCollection matches = find.Matches(sample);
    foreach (Match m in matches)
        {
        Console.WriteLine("{0}{1} {2} {3} is {4} {5} {6} {7}", m.Groups[1], m.Groups[2], m.Groups[3], m.Groups[4], m.Groups[5], m.Groups[6], m.Groups[7], m.Groups[8] );
        }
    Console.WriteLine();


anabeth4

thanx много, но мой файл содержит больше строк, я дал в exapmle только 3 для демострации.Итак, можете ли вы помочь с другим решением, которое считывает из всех файлов строку за строкой и печатает выходной файл с правилами, которые я описал ниже?