Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Как прочесть числа из текстового файла?


Автор: Dims 25.11.2008, 02:34
Есть текстовый файл, в котором через табы и/или пробелы записаны числа (дробные) в несколько строчек. Как их прочесть? Есть встроенные средства? Или надо самому парсить?

Автор: nikitao 25.11.2008, 05:03
http://habrahabr.ru/blogs/net/25885/

Автор: Sfate 25.11.2008, 15:22
nikitao, огромное спс smile не знаю как автору, мне помогло

Автор: Bogdan1024 25.11.2008, 16:35
Сей файл есмь CSV-файл.
Если встроенными, то можно ещё использовать Access'овский провайдер данных и работать с файлом как с базой данных.
А ещё на sourceforge валялся ещё один быстрый парсер таких файлов...

Автор: diadiavova 25.11.2008, 22:54
Вариант:

Код

        public double[] ParseText(string txt)
        {
            double[] retVal;
            string[] txtArr = System.Text.RegularExpressions.Regex.Split(txt, "\\s+");
            retVal = new double[txtArr.Length];
            for (int i=0;i< txtArr.Length;i++)
            {
               retVal[i]= double.Parse(txtArr[i]);
            }
            return retVal;
        }


Если входной текст имеет правильный формат, то есть содержит числа разделённые пробелами, новыми строками и знаками табуляции, то на выходе будет массив типа double. При возможном неверном формате надо либо обработать исключение, либо воспользоваться методом TryParse вместо Parse.
Кроме того: метод Parse перегружен, особое внимание следует обратить на метод 

System.Double.Parse(string, System.IFormatProvider)

В качестве второго аргумента можно взять экземпляр типа   System.Globalization.NumberFormatInfo, реализующий интерфейс  System.IFormatProvider. В нём можно задать такие свойства как например разделитель десятичных разрядов(точка или запятая) и другие свойства, которые позволят правильно выпарсить число.


Автор: EgoBrain 30.11.2008, 08:30
Первое что бы мне пришло в голову при решении данной задачи - это использовать регулярные выражения. Наверное это сложнее, но имхо эффективнее.

Автор: PashaPash 30.11.2008, 13:50
EgoBrain, чем регулярные выражения эффективнее String.Split и Double.Parse?
А вообще - согласен с Bogdan1024 - взять готовый провайдер, или CSVReader, и не изобретать колесо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)