Récupérer le texte entre ; d'un fichier texte
sommaille
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis actuellement en train de rédiger un programme en VB (via VB express 2016) et j'aimerai savoir comment récupérer chaque argument d'un fichier texte se trouvant entre les ; et les stocker dans une nouvelle variable chaque ligne à ligne.
Explications :
Fichier texte : Toto;toto@gmail.com;totoVille
Titi;titi@gmail.com;titiVille
J'aimerai envoyer un mail au second argument de la ligne, en remplaçant dans mon texte %nom par le premier argument de la ligne et le %localisation par le dernier argument de la ligne.
Avec l'exemple de la première ligne ça donnerait Bonjour Toto, depuis totoVille et un mail envoyé à l'adresse mail de la ligne, et ce pour n lignes d'un fichier texte.
Je souhaite, en clair, récupérer chaque string entre deux ; ; pour les stocker dans une variable, puis passer à la ligne suivante etc..
Merci :) !
Je suis actuellement en train de rédiger un programme en VB (via VB express 2016) et j'aimerai savoir comment récupérer chaque argument d'un fichier texte se trouvant entre les ; et les stocker dans une nouvelle variable chaque ligne à ligne.
Explications :
Fichier texte : Toto;toto@gmail.com;totoVille
Titi;titi@gmail.com;titiVille
J'aimerai envoyer un mail au second argument de la ligne, en remplaçant dans mon texte %nom par le premier argument de la ligne et le %localisation par le dernier argument de la ligne.
Avec l'exemple de la première ligne ça donnerait Bonjour Toto, depuis totoVille et un mail envoyé à l'adresse mail de la ligne, et ce pour n lignes d'un fichier texte.
Je souhaite, en clair, récupérer chaque string entre deux ; ; pour les stocker dans une variable, puis passer à la ligne suivante etc..
Merci :) !
A voir également:
- Récupérer le texte entre ; d'un fichier texte
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
2 réponses
Bonjour
tout d'abord, je te conseille d'utiliser Visual Studio Commuty plutôt que Visual Studio Express, les 2 sont gratuits et Community est plus complet.
Commence par écrire une classe dont chaque champ correspond à une "colonne" de ton csv.
Il faut maintenant savoir initialiser une instance de cette classe avec les données d'une ligne.
J'ai tendance à "prôner" qu'une classe doit savoir se deserialisée elle -même.
On peut utiliser un constructeur ou une méthode de classe.
Je te montre avec un constructeur
On peut même écrire une propriété qui retournera le corps du message.
Maintenant que nous savons faire l'import d'une ligne dans une instance d'un objet bien pratique, il faut lire le fichier et créer une collection d'instances de notre classe Donnees
Cette fois, je te propose une méthode de classe.
On va faire une requête Linq sur File.ReadAllLines, cela nécessite l'import de System.IO
Il ne te reste plus, de l'endroit ou tu veux lire ce fichier qu'à faire
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
tout d'abord, je te conseille d'utiliser Visual Studio Commuty plutôt que Visual Studio Express, les 2 sont gratuits et Community est plus complet.
Commence par écrire une classe dont chaque champ correspond à une "colonne" de ton csv.
Public Class Donnees Public Property Nom() As String Public Property Email() As String Public Property Lieu() As String End Class
Il faut maintenant savoir initialiser une instance de cette classe avec les données d'une ligne.
J'ai tendance à "prôner" qu'une classe doit savoir se deserialisée elle -même.
On peut utiliser un constructeur ou une méthode de classe.
Je te montre avec un constructeur
Public Sub New(Ligne As String) Dim donnees As String() = Ligne.Split(";"c) 'split découpe un string en fonction d'un ou plusieur séparateurs Nom = donnees(0) Email = donnees(1) Lieu = donnees(2) End Sub
On peut même écrire une propriété qui retournera le corps du message.
Public ReadOnly Property Corps() As String Get Return String.Format("Bonjour {0}, de {1}", Nom, Lieu) End Get End Property
Maintenant que nous savons faire l'import d'une ligne dans une instance d'un objet bien pratique, il faut lire le fichier et créer une collection d'instances de notre classe Donnees
Cette fois, je te propose une méthode de classe.
On va faire une requête Linq sur File.ReadAllLines, cela nécessite l'import de System.IO
Public Shared Function LireFichier(ByVal Filename As String) As List(Of Donnees) Return ( From ligne In File.ReadAllLines(Filename) Select New Donnees(ligne)).ToList() End Function
Il ne te reste plus, de l'endroit ou tu veux lire ce fichier qu'à faire
Dim mesDonnees As List(Of Donnees) = Donnees.LireFichier(Chemin)
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Premièrement effectivement j'utilise bel et bien VStudio community :)
Deuxièmement, effectivement je cherche à faire cela sous forme structuré csv mais avec intégration de variable au cas par cas :
Mettre toto dans la variable locale Nom
Mettre toto@gmail.com dans la var locale Email
Mettre totoVille dans la var local Ville
Remplacer %nom, %email et %ville par les champs respectifs dans un textbox multiline; envoyer le mail à 'Email' avec les champs % modifiés, ensuite recommencer, pour chaque ligne du fichier.
En clair : Envoyer un sample identique avec 3 variables qui diffèrent : Nom, Email et Ville, permettant d'envoyer un email avec ces champs personnalisés et un texte qui reste identique.
En tapant le code au dessus de Public class Accueil :
Ainsi que celui ci dessous dans Public class Accueil :
j'obtiens sur une erreur sur 'ligne' avec comme explications : Too many arguments to 'Public Sub New()'
Quant à Nom, Email et Lieu, ils sont dit comme non défini, ce qui est le cas, je dois les définir en tant que Public au préalable, en tant que string ?
Merci de votre soutien,
Amicalement,
je t'ai écrit de créer une classe, pas d'essayer de l'imbriquer dans une classe existante.
Je te conseille de suivre ce cours https://plasserre.developpez.com/cours/vb-net/ avant de te remettre à ton projet.