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

我正在使用 快速 CSV 阅读器解析一些粘贴到网页上的文本。Fast CSV reader 需要一个 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();
}

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 的字符串示例:

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

如果这是正确的方法有什么想法吗? 再次感谢你的帮助!

102369 次浏览

使用继承 TextReaderStringReader类。

使用 System.IO.StringReader:

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

你需要 字符串阅读器

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

只需使用 字符串阅读器类,它从 TextReader 继承。

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

StringReader a TextReader(StreamReader也是,但用于从流中读取)。因此,举第一个例子,仅仅使用它来构建 CsvReader,而不是首先尝试从它构建 StreamReader:

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