J'utilise un lecteur CSV rapide 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. Quelle est la meilleure façon de convertir une chaîne en un objet TextReader à la volée?
Merci!
Mise à jour - Exemple de code - Dans l'exemple d'origine, un nouveau StreamReader recherche un fichier appelé «data.csv». J'espère 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();
}
Le new StreamReader(sr)
me dit qu'il a des arguments invalides. Des idées?
En guise d'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 échantillon de la chaîne de TextBox_StartData.Text:
Fname\tLname\tEmail\nClaude\tCuriel\tClaude.Curiel@email.com\nAntoinette\tCalixte\tAntoinette.Calixte@email.com\nCathey\tPeden\tCathey.Peden@email.com\n
Des idées si c'est la bonne approche? Merci encore pour votre aide!
la source
TextReader
n'est pas une interface, c'est une classe abstraite.Vous voulez un StringReader
la source
StringReader
est unTextReader
(StreamReader
est aussi, mais pour la lecture à partir de flux). Donc, prendre votre premier exemple et l'utiliser simplement pour construire leCsvReader
plutôt que d'essayer de construire un àStreamReader
partir de celui-ci donne d'abord:la source
Utilisez simplement la classe StringReader . Il hérite de TextReader.
la source
Si vous regardez la documentation de
TextReader
, vous verrez deux classes héritières. Et l'un d'eux estStringReader
, qui semble faire exactement ce que vous voulez.la source