J'utilise A Fast CSV Reader pour analyser du texte collé dans une page Web. Le lecteur Fast CSV nécessite un objet TextReader, et tout ce que j'ai est une chaîne. Quel est le meilleur moyen de convertir une chaîne en un objet TextReader à la volée?
Merci!
Update - Sample code- Dans l'exemple d'origine, un nouveau StreamReader recherche un fichier appelé "data.csv". J'espère pouvoir le fournir via TextBox_StartData.Text.
L'utilisation de ce code ci-dessous ne compile pas.
TextReader sr = new StringReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
La new StreamReader(sr)
me dit qu'elle a des arguments non valides. Des idées?
Comme approche alternative, j'ai essayé ceci:
TextReader sr = new StreamReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
mais j'obtiens un Illegal characters in path Error.
Voici un exemple de la chaîne de TextBox_StartData.Text:
Fname\tLname\tEmail\nClaude\tCuriel\[email protected]\nAntoinette\tCalixte\[email protected]\nCathey\tPeden\[email protected]\n
Des idées si c'est la bonne approche? Merci encore pour votre aide!
Utilisez System.IO.StringReader :
using(TextReader sr = new StringReader(yourstring))
{
DoSomethingWithATextReader(sr);
}
Utilisez la classe StringReader
qui hérite de TextReader
.
StringReader
est a TextReader
(StreamReader
l'est aussi, mais pour lire des flux). Donc, en prenant votre premier exemple et en l'utilisant simplement pour construire le CsvReader
plutôt que d'essayer de construire un StreamReader
à partir de celui-ci, vous obtiendrez d'abord:
TextReader sr = new StringReader(TextBox_StartData.Text);
using(CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
Vous voulez un StringReader
var val = "test string";
var textReader = new StringReader(val);
Utilisez simplement la classe StringReader . Il hérite de TextReader.
Si vous regardez la documentation de TextReader
, vous verrez deux classes hériter. Et l’un d’eux est StringReader
, qui semble faire exactement ce que vous voulez.