Проблема при чтении текстового файла сохраните его в csv-файл на C#?
Привет ,
У меня есть формат текстового файла, как показано ниже. Я сохраняю в csv-файл на языке c#.
//нужно проигнорировать строку пары разрешений персонала,строку учетных данных в текстовом файле.
Доступ к текстовому файлу:
Название:,4-й этаж, IT
Пара Допуска Персонала
Название оформление: это
Учетные данные
Номер карты:,1234
Имя: Грэм, Джон
Пара Допуска Персонала
Название зазор:,темпы
Учетные данные
Номер карты:,23489
Я зацикливаюсь на текстовом файле, как показано ниже
try { System.IO.TextWriter Summarytw = System.IO.File.CreateText(sOutputFilePath + sOutFileName_DST); //Here I am adding column names to csv file(output file). string line1 = string.Empty; string strColumnname = string.Empty;//{"Name","Clearance name","Card number"}; strColumnname = "Name,Clearance name,Card number"; string[] arr = strColumnname.Split(','); int a = arr.Length; for (int y = 0; y < arr.Length; y++) { line += arr[y].ToString() + ","; } Summarytw.WriteLine(line); //here I am reading the text file(input file) using (System.IO.StreamReader sr = new System.IO.StreamReader(sInputPath + sInFile)) { while ((line = sr.ReadLine()) != null) { //I need to save only name, clearance name, card number values to the csv file. if ((line.Contains("Name")) || (line.Contains("Clearance name")) || (line.Contains("Card number"))) { string s = line.ToString(); string pattern = ":,"; string strdelimiter = ","; string[] substrings = Regex.Split(line, pattern); for (int i = 1; i < substrings.Length; i++) { string value = substrings[1].ToString(); if (i == substrings.Length) { strconcat += " " + value + " "; } else { strconcat += "\" " + value + "\""; strconcat += strdelimiter; } } } if (line.StartsWith("Card number")) { strconcat += Environment.NewLine; } } Summarytw.WriteLine(strconcat); } }
для приведенной выше строки в Access.txt код у него работал нормально.
но если данные такие как показано ниже
Name:,lori, Julie Personnel Clearance Pair Clearance name:,Access Full Time Employees //No card number row Credential Name:,Badge 43511, Visitor Personnel Clearance Pair//No clearance name row Credential Card number:,43511
если нет номера карты или имени разрешения, то csv-файл выглядит следующим образом.
ACCESS.CSV:
Имя разрешение имя номер карты
4-й этаж, это он 1234
Грэм, Джон Темпс 23489
Лори, Джули доступ (если нет номера карты, то он помещается со следующими деталями записи)
Значок 56892 56892 (если имя разрешения пустое, то номер карты сохраняется в поле Имя разрешения в csv-файле.)
Данные текстового файла строчны .
Как прочитать и сохранить его в csv-файл
Что я уже пробовал:
Перепробовал много вещей, но потерпел неудачу.
поискал в google, но не нашел правильного ответа.
Пожалуйста, помогите мне.
Спасибо, неосторожность.
j snooze
Ну, если всегда есть имя, вы можете просто проверить, является ли текущая строка, на которую вы смотрите, именем...если это среда concat.Новая строка перед добавлением имени и последующих полей следующая строка, разделенная запятыми. Таким образом, вам не нужно беспокоиться, если после этого не будет несуществующего поля.
Если это имеет значение, вы можете проверить, является ли это первой записью, а не добавлять новую строку перед именем в первый раз.