Как в C # создать объект TextReader из строки (без записи на диск)


126

Я использую программу чтения CSV для анализа вставленного текста на веб-страницу. Для чтения Fast CSV требуется объект TextReader, и все, что у меня есть, - это строка. Как лучше всего на лету преобразовать строку в объект TextReader?

Спасибо!

Обновление - Пример кода - В исходном примере новый StreamReader ищет файл с именем «data.csv». Я надеюсь предоставить его через TextBox_StartData.Text.

Использование этого кода ниже не компилируется.

        TextReader sr = new StringReader(TextBox_StartData.Text);
        using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
        {
            DetailsView1.DataSource = csv;
            DetailsView1.DataBind();
        }

new StreamReader(sr)Говорит мне , что есть некоторые неверные аргументы. Любые идеи?

В качестве альтернативного подхода я пробовал это:

        TextReader sr = new StreamReader(TextBox_StartData.Text);
        using (CsvReader csv = new CsvReader(sr, true))
        {
            DetailsView1.DataSource = csv;
            DetailsView1.DataBind();
        }

но я получаю Illegal characters in path Error.вот образец строки из TextBox_StartData.Text:

Fname\tLname\tEmail\nClaude\tCuriel\tClaude.Curiel@email.com\nAntoinette\tCalixte\tAntoinette.Calixte@email.com\nCathey\tPeden\tCathey.Peden@email.com\n

Есть идеи, если это правильный подход? В очередной раз благодарим за помощь!

Ответы:



9

Используйте StringReaderкласс, который наследует TextReader.


3
TextReaderэто не интерфейс, это абстрактный класс.
svick


4

StringReader являетсяTextReader ( StreamReaderслишком, но для чтения из потоков). Итак, взяв ваш первый пример и просто используя его для построения, CsvReaderа не пытаясь построить StreamReaderиз него, сначала дает:

TextReader sr = new StringReader(TextBox_StartData.Text);
using(CsvReader csv = new CsvReader(sr, true))
{
  DetailsView1.DataSource = csv;
  DetailsView1.DataBind();
}

Спасибо, Джон ... Я думаю, что в Fast CSV Framework есть ошибка. Я получаю следующий результат:! screencast.com/t/5wZRrjDMO ...
Hairgami_Master

Мой CSV - fname, lname, email john, doe, jd @ email.com
Hairgami_Master

1
Это (после того, как я просматриваю источник, чтобы увидеть, что вы все равно ссылаетесь на screencast.com/t/5wZRrjDMO ), похоже, что вы создаете серию массивов строк (по одной для каждой строки) и пытаетесь их отобразить, что приводит к текст "System.String []" повторяется. Для меня это звучит как разумный результат работы парсера CSV, который плохо обработан. Попробуйте вывести его в сетку и посмотреть, что произойдет.
Джон Ханна,

Спасибо, Джон. На самом деле, я использую GridView, я пробовал пару из них, но я предполагаю, что данные возвращаются правильно, это просто вопрос выбора правильного элемента управления отображением данных .. ??
Hairgami_Master

1
Я стараюсь не сильно использовать элементы управления, поэтому может быть что-то мне не хватает. Результат выглядит как серия массивов строк (по одному массиву для каждой строки, по одной строке для каждой ячейки), что имеет смысл. Не уверен, почему это не работает дальше, я боюсь :(
Джон Ханна


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.