Faire une Recherche dans un Fichier à partir d'une Chaine de Caractère [Résolu]

Signaler
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007
-
Messages postés
1
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
10 février 2006
-
Bonjour

Est il possible de faire une recherche de caractère dans un fichier texte qui donnerait le même type de resultat qu'un like en sql .
Exemple :

si je cherche un Mot commencant par P et que dans moi fichier texte j'ai patate, poivre, etc, il devra m'affichait tout les lignes qui commenceront par la lettre P.

Pour l'instant, j'ai le code suivante :


if(this.solucevirustrouvee.Items.Count !=0)


{


this.solucevirustrouvee.Items.Clear();


}


FileStream nomvirus = new FileStream("NomVirus.txt",FileMode.Open,FileAccess.Read);


StreamReader lirenom = new StreamReader(nomvirus);


string lire = lirenom.ReadLine();


indexnom=0;


i=0;


string nom ="inconnu";


while(lire != null)


{


if(lire == this.NomVirus.Text)


{


nom ="trouvée";


this.solucevirustrouvee.Items.Add(lire);


indexrecup[i] = indexnom;


i = i + 1;


}


else


{


indexnom = indexnom + 1;


}


MessageBox.Show(""+lire);


lire = lirenom.ReadLine();


}


if(nom=="inconnu")


{


this.solucevirustrouvee.Items.Add("Ce Virus n'existe pas dans la base de donnée");




}


MessageBox.Show(""+nom);


MessageBox.Show(""+indexnom);


lirenom.Close();

Pour l'instant , il n'affiche que si le nom exacte existe dans le fichier, moi je veux que si la ligne contient poivre de grece, et que j'ai tapé en recherche poivre, il m'affiche poivre de grece.

Quelqu'un peut il me dire si c'est possible de faire ça avec les fichiers txt ?
Merci d' Avance
Maiku

5 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
string lire;
while ((lire = lirenom.ReadLine()) != null) {
if (lire.StartWidth("t")) {
this.soluceVirusTrouvee.Add(lire);
}
}

Sébastien FERRAND
[MVP C#]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
je vois 1 solution simple... et une autre pour le fun :

- pour chaque ligne tu fais : ligne.StartWith("t") // pas trop dur ca

- et pour le fun, une expression régulière sur l'ensemble du fichier : ^t.*$

Sébastien FERRAND
[MVP C#]
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Tu peux expliquer ce que fais exactement ta solution stp ?

Maiku
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Merci a toi j'ai utilisé ta solution, et l'ai un peu completé, mon code donne maintenant :


while(lire != null)


{


if(lire.StartsWith(this.NomVirus.Text) || lire.EndsWith(this.NomVirus.Text))


{


nom ="trouvée";


this.solucevirustrouvee.Items.Add(lire);


indexrecup[i] = indexnom;


i = i + 1;




}

Grâce à toi , je viens de comprendre mieux les methodes startswith et endswith, merci à toi

Maiku
Messages postés
1
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
10 février 2006

Bonjour,

Question: Je cherche a faire une recherche d'un texte dans un fichier de type Word (au lieu de txt qui marche trés bien). Est ce que vous pourriez me dire comment je peux m'y prendre parce que lorsque je fais un readline de mon streamreader de mon fichier word, il me renvoi une suite de bit et par conséquent je ne peux pas tester si ma chaine de caractere est dans mon fichier .
Remarque. Je cherche a faire une recherche de texte dans des fichiers de tout type d'extension, pas seulement sur des fichiers txt pour lesquels ca marche trés bien.

Merci d'avance!

Seb