在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); }
使用实现TextReader
的StringReader
类。
你想要一个StringReader
var val = "test string"; var textReader = new StringReader(val);
StringReader
是一个TextReader
( StreamReader
也是,但是用于读取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
,这似乎正是你想要的。