Bonjour , voila j'ai un petit probleme pour realiser une boucle afin de comparer des sous chaines de caractere dans deux listes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 // Fonction qui compare les differents ligne private List<string> comparerTags(List<string> fichier1, List<string> fichier2) { //Creation d'une troisieme liste List<string> fichier3 = new List<string>(); //Le premier cas fonctionne correctement et verifie si un une ligne est presente dans les deux fichier, il ajoute la ligne dans la liste fichier 3 fichier1.ForEach(delegate(string tags) { fichier2.ForEach(delegate(string tags2) { if (tags != null && tags2 != null) { if (String.Compare(tags, tags2) == 0) { fichier3.Add(tags); } else if (String.Compare(tags.Substring(0, 6), tags2.Substring(0, 6)) == 0) { fichier3.Add(tags2); } } }); }); // Le deuxieme cas verifie qu'il y a une qui n'est pas present dans le fichier 2 on ajoute cette ligne dans la liste fichier 3 foreach(string mot in fichier2) { if (!fichier3.Contains(mot)) { fichier3.Add(mot); } } // Le troisieme cas ne fonctionne pas foreach(string mots in fichier1) { recherche = mots.Substring(0, 6); if (recherche != null) { fichier3.Find(item => item.Substring(0, 7) != recherche); { fichier3.Add(mots); } } } return fichier3; }
car mes Listes se presentent ainsi par exemple(juste pour comprendre le contexte )
List<string>Fichier1
"berlin";"allemagne"
"paris";"francque" (juste pour l'exemple )
"madrid";"espagne"
"barcelone";"espagne"
List<string>Fichier2
"berlin";"allemagne"
"paris";"france"
"Londres";"angleterre"
"rome";"italie"
Le Premier cas est respecté
Si une ligne est presente dans les deux listes, il ajoute la ligne dans la listFichier3
Le Deuxieme cas aussi est respecté
Si une ligne de la listFichier2 n'est pas presente dans le fichier 3 , il l'ajoute
Mais le troisieme cas ne fonctionne pas !
Je souhaite realiser une boucle qui ajoute le reste des lignes de la ListFichier1 non presente dans la Listfichier 3
<Par exemple
"barcelone";"espagne"(la ligne non traité )
et eviter qu'il m'ajoute aussi :
"paris";"francque"
"paris";"france"
Or je veux simplement
"paris";"france"
car dans mon programme certaines fois il peut y avoir des modification a droite du separateur ";". Ces modifications sont mis dans la listFichier2 d'ou la volonté d'utiliser une sous-chaine pour voir si la chaine de caractere à gauche du separateur ";" sont similaires entre la listFichier1 et listFichier3.
Ou est t'il possible de séparer ma ListFichier en deux colonnes pour pouvoir travailler sur les villes ou sur les pays?
J'ai besoin d'aide, Merci.
Partager