在C#中,如何从字符串创建TextReader对象(无需写入磁盘)

时间:2011-10-20 14:54:34

标签: c# csv csvhelper textreader

我正在使用A Fast CSV Reader将一些粘贴的文本解析为网页。 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

任何想法,如果这是正确的方法?再次感谢您的帮助!

6 个答案:

答案 0 :(得分:209)

使用System.IO.StringReader

using(TextReader sr = new StringReader(yourstring))
{
    DoSomethingWithATextReader(sr);
}

答案 1 :(得分:7)

使用继承StringReader。{/ p>的TextReader

答案 2 :(得分:4)

您需要StringReader

var val = "test string";
var textReader = new StringReader(val);

答案 3 :(得分:4)

StringReader 一个TextReaderStreamReader也是,但是从流中读取)。所以拿第一个例子,然后用它构建CsvReader而不是试图从中构造StreamReader首先给出:

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

答案 4 :(得分:2)

只需使用StringReader课程即可。它继承自TextReader。

答案 5 :(得分:1)

如果查看the documentation for TextReader,您将看到两个继承类。其中一个是StringReader,它似乎正是你想要的。