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

Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 25 oct. 2005 à 15:10 - Dernière réponse : devroeroy 1 Messages postés samedi 7 janvier 2006Date d'inscription 10 février 2006 Dernière intervention
- 10 févr. 2006 à 19:49
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
Afficher la suite 

5 réponses

Répondre au sujet
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 25 oct. 2005 à 15:33
+3
Utile
string lire;
while ((lire = lirenom.ReadLine()) != null) {
if (lire.StartWidth("t")) {
this.soluceVirusTrouvee.Add(lire);
}
}

Sébastien FERRAND
[MVP C#]
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de sebmafate
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 25 oct. 2005 à 15:19
0
Utile
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#]
Commenter la réponse de sebmafate
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 25 oct. 2005 à 15:21
0
Utile
Tu peux expliquer ce que fais exactement ta solution stp ?

Maiku
Commenter la réponse de Maiku
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 25 oct. 2005 à 16:02
0
Utile
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
Commenter la réponse de Maiku
devroeroy 1 Messages postés samedi 7 janvier 2006Date d'inscription 10 février 2006 Dernière intervention - 10 févr. 2006 à 19:49
0
Utile
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
Commenter la réponse de devroeroy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.