В C#, как я могу создать объект TextReader из строки (без записи на диск)
я использую быстрый читатель CSV чтобы разобрать некоторые вставленные тексты на веб-странице. Для быстрого чтения CSV требуется объект TextReader, и все, что у меня есть, это строка. Каков наилучший способ преобразования строки в объект TextReader на лету?
спасибо!
обновление- Пример кода-в исходном примере новый StreamReader ищет файл с именем " data.csv". Я надеюсь поставить его через TextBox_StartData.Текст.
использование этого кода ниже не делает компилировать.
TextReader sr = new StringReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
The 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.Текст:
FnametLnametEmailnClaudetCurieltClaude.Curiel@email.comnAntoinettetCalixtetAntoinette.Calixte@email.comnCatheytPedentCathey.Peden@email.comn
любые идеи, если это правильный подход? Еще раз спасибо за вашу помощь!
6 ответов:
использовать System.IO. StringReader :
using(TextReader sr = new StringReader(yourstring)) { DoSomethingWithATextReader(sr); }
вы хотите StringReader
var val = "test string"; var textReader = new StringReader(val);
StringReader
и aTextReader
(StreamReader
тоже, но для чтения из потоков). Поэтому возьмите свой первый пример и просто используйте его для построенияCsvReader
вместо того чтобы пытаться построитьStreamReader
от него сначала дает:TextReader sr = new StringReader(TextBox_StartData.Text); using(CsvReader csv = new CsvReader(sr, true)) { DetailsView1.DataSource = csv; DetailsView1.DataBind(); }
просто использовать StringReader класса. Он наследует от TextReader.
Если вы посмотрите на документация
TextReader
, вы увидите два наследующих классов. И один из них -StringReader
, который, кажется, делать именно то, что вы хотите.