Member 13784261 Ответов: 1

Как создать новый столбец в консоли C# для csv - файла


мне удается извлечь все строки и столбцы из csv-файла. я не уверен, в чем разница между file.createtext и file.appendtext. извините за вопрос, мне 18 лет, я все еще беру диплом. это мой код.

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

class Program
    {
        static void Main(string[] args)
        {
            string path = "Accounts.csv";

            // This text is added only once to the file.


            // Open the file to read from.
            string[] readText = File.ReadAllLines(path);
            while (true)
            {
                Console.Write("Enter first field or 'q' to quit : ");
                string first = Console.ReadLine();
                if (first == "q" || first == "Q") return;
                bool found = false;

                foreach (string s in readText)
                {
                    if (s.StartsWith(first + "," ))
                    {
                        string[] fields = s.Split(',');
                        Console.WriteLine("The second field is : {0}", fields[1]);
                        Console.WriteLine("The third field is : {0}", fields[2]);
                        Console.WriteLine("The forth field is : {0}", fields[3]);
                        Console.WriteLine("The firth field is : {0}", fields[4]);
                        Console.WriteLine("The third field is : {0}", fields[5]);
                        Console.WriteLine("The sixth field is : {0}", fields[6]);
                        Console.WriteLine("The seventh field is : {0}", fields[7]);
                        Console.WriteLine("The eigth field is : {0}", fields[8]);
                        Console.WriteLine("The ninth field is : {0}", fields[9]);
                   


                        found = true;
                        break;
                    }
                }
                if (!found) Console.WriteLine("There is no record with a first field of {0}", first);
                Console.WriteLine();
            }
        }
    }

1 Ответов

Рейтинг:
2

OriginalGriff

Мне неприятно это говорить, но ..... этот код довольно ужасен и на самом деле не соответствует вашему вопросу.
Первая проблема заключается в том, что вы полагаетесь на то, что файл абсолютно корректен, а это опасно.
Если каждая строка не содержит 10 столбцов, она завершится ошибкой.
если какой-либо столбец содержит запятую (как, например, часто делают адреса), то ваши данные будут отключены.

Начните с проверки возвращаемого значения из Split: имеет ли оно правильное количество столбцов? Затем подумайте о том, чтобы заключить строки в ваш CSV-файл в двойные кавычки:

"Mike Smith, Junior", "123, A Street, A town", 17899, ...
Это требует более сложной обработки, чтобы прочитать его, но это значительно более надежно и избавит вас от многих душевных страданий позже.

Что касается досье.CreateText и файл.AppendText самый простой способ узнать разницу-это посмотреть документацию:
Файл.Метод CreateText (Строка) (System.IO)[^]
Файл.Метод AppendText (Строка) (System.IO)[^]
В основном, первый выбрасывает существующий файл в пользу новых данных, второй добавляет новые данные в конец существующего файла.
(Но вы должны были догадаться об этом по именам!)