[débutant] IndexOf() ne fonctionne pas dans mon cas

Résolu
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020 - 18 juin 2009 à 12:22
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 18 juin 2009 à 20:09
Bonjour,

Je souhaite lire un fichier texte, le charger dans un Arraylist afin de pouvor le traiter ( modification, insertion).

J'utilise un ArrayList afin d'avoir un tableau de string dynamique.

J'ai un seul petit soucis, petit, mais très génant.

Le IndexOf ne fonctionne pas !

En gros, je prend chaque ligne avec Readline, je les met une par une dans un élément de mon ArrayList.

Ensuite, je fais un :


m_StreamRead = new StreamReader(@"c:\toto.txt");

while (m_StreamRead.Peek() > 0)
{
    strCurrentLigne.Add(m_StreamRead.ReadLine());
}

int nPosition;
String myString = "[meschamps]";

nPosition = strCurrentLigne.IndexOf(myString);



Le soucis est nPosition me renvoie -1 au lieu de la position de l'occurence [meschamps].

J'ai regardé en debug, mon Arraylist est pourtant bien alimenté ligne par ligne.

Je ne comprend vraiment pas.

Merci bcp :)

Nixeus'
A voir également:

5 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
18 juin 2009 à 12:31
Salut

Es-tu sûr que dans ton fichier texte, il y a bien une ligne égale à "[meschamps]" ? (pas une partie, mais une ligne entière)

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
3
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
18 juin 2009 à 13:52
Haha,

Merci krimog,

Enfait, il y a un espace devant le [champ], je n'y avais pas fais attention et à vrai dire je pensais que IndexOF recherchais une partie et non uniquement l'occurence.

Existe-il une méthode pour rechercher une occurence dans une ligne ? Car j'en aurais besoin par la suite.Merci

Nixeus'
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
18 juin 2009 à 13:55
Suis-je bête.

J'oubliais le .ToString().Contains(string xxx)

Nixeus'
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
18 juin 2009 à 14:36
Il y a même moyen de ne pas faire de boucle pour faire le "Contains()" via une expression Lambda, en utilisant cependant une List<string> à la place de ton ArrayList :

List<string> maListe = new List<string>();
while (m_StreamRead.Peek() > 0)
{
    maListe.Add(m_StreamRead.ReadLine());
}

string myString = "[meschamps]";int nPosition maListe.FindIndex(s> s.Contains(myString));

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
18 juin 2009 à 20:09
La boucle est bien entendue implicite !
En passant, même si une lambda expression est plus "jolie" à voir, elle est en principe moins rapide...

<hr />
-Blog-
-Site Perso-
0
Rejoignez-nous