programacion - lenguaje c# pdf
En C#, ¿cómo puedo crear un objeto TextReader a partir de una cadena(sin escribir en el disco) (6)
Quieres un StringReader
var val = "test string";
var textReader = new StringReader(val);
Estoy usando A Fast CSV Reader para analizar el texto pegado en una página web. El lector Fast CSV requiere un objeto TextReader, y todo lo que tengo es una cadena. ¿Cuál es la mejor manera de convertir una cadena en un objeto TextReader sobre la marcha?
¡Gracias!
Actualización: código de muestra: en el ejemplo original, un nuevo StreamReader está buscando un archivo llamado "data.csv". Espero suministrarlo a través de TextBox_StartData.Text.
El uso de este código a continuación no se compila.
TextReader sr = new StringReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
El new StreamReader(sr)
me dice que tiene algunos argumentos inválidos. ¿Algunas ideas?
Como un enfoque alternativo, he intentado esto:
TextReader sr = new StreamReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
pero obtengo Illegal characters in path Error.
Aquí hay una muestra de la cadena de TextBox_StartData.Text:
Fname/tLname/tEmail/nClaude/tCuriel/[email protected]/nAntoinette/tCalixte/[email protected]/nCathey/tPeden/[email protected]/n
Alguna idea si este es el enfoque correcto? ¡De nuevo, gracias por tu ayuda!
Si mira la documentación de TextReader
, verá dos clases TextReader
. Y uno de ellos es StringReader
, que parece hacer exactamente lo que quieres.
Simplemente use la clase StringReader . Hereda de TextReader.
Use System.IO.StringReader :
using(TextReader sr = new StringReader(yourstring))
{
DoSomethingWithATextReader(sr);
}
Use la clase StringReader
, que hereda TextReader
.
StringReader
es un TextReader
( StreamReader
es también, pero para leer de las transmisiones). Así que, tomando primero su primer ejemplo y simplemente usándolo para construir el CsvReader
lugar de tratar de construir un StreamReader
, primero da:
TextReader sr = new StringReader(TextBox_StartData.Text);
using(CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}