Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как прочесть числа из текстового файла? 
:(
    Опции темы
Dims
Дата 25.11.2008, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Есть текстовый файл, в котором через табы и/или пробелы записаны числа (дробные) в несколько строчек. Как их прочесть? Есть встроенные средства? Или надо самому парсить?
PM MAIL   Вверх
nikitao
Дата 25.11.2008, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26





--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Sfate
Дата 25.11.2008, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Angry Beaver
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 7.9.2008
Где: mov AL, BL

Репутация: нет
Всего: нет



nikitao, огромное спс smile не знаю как автору, мне помогло
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown
PM MAIL WWW ICQ   Вверх
Bogdan1024
Дата 25.11.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 3
Всего: 13



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


--------------------
user posted image
PM MAIL   Вверх
diadiavova
Дата 25.11.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Вариант:

Код

        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. В нём можно задать такие свойства как например разделитель десятичных разрядов(точка или запятая) и другие свойства, которые позволят правильно выпарсить число.



Это сообщение отредактировал(а) diadiavova - 25.11.2008, 23:15


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
EgoBrain
Дата 30.11.2008, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: 1
Всего: 2



Первое что бы мне пришло в голову при решении данной задачи - это использовать регулярные выражения. Наверное это сложнее, но имхо эффективнее.
PM MAIL ICQ Skype   Вверх
PashaPash
Дата 30.11.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



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

Это сообщение отредактировал(а) PashaPash - 30.11.2008, 13:52


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0934 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.