在C#中,如何从string创build一个TextReader对象(不写入磁盘)

我正在使用一个快速的CSV阅读器来parsing一些粘贴的文字到一个网页。 Fast CSV阅读器需要一个TextReader对象,而我所拥有的只是一个string。 将string转换为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的一个string示例:

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

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

使用System.IO.StringReader :

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

使用实现TextReaderStringReader类。

你想要一个StringReader

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

StringReader 一个TextReaderStreamReader也是,但是用于读取stream)。 所以把你的第一个例子,并使用它来构buildCsvReader而不是试图从它构造一个StreamReader首先给出:

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

只需使用StringReader类。 它从TextReaderinheritance。

如果您查看TextReader的文档 ,您将看到两个inheritance类。 其中之一是StringReader ,这似乎正是你想要的。