cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019
-
8 août 2015 à 23:35
Whismeril
Messages postés19140Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention27 août 2024
-
10 août 2015 à 08:49
Bonjour
J'ai une list of string que je parcours avec une boucle for.
Mais aussi je retire de la liste tous les items contenant un substring
le bug est que la liste est modifié et le for ne plus être effectué.
Private worddelete As String For Each item In listwords if ...... then worddelete = item listwords.RemoveAll(AddressOf Removefromlist) End If next
Private Function Removefromlist(str As String) As Boolean If str.Contains(worddelete) Then Return True End If Return False End Function
NHenry
Messages postés15150Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 août 2024159 8 août 2015 à 23:48
Évidemment, tu fais un For Each.
il faut que tu enregistre les éléments à supprimer dans une autre liste puis que tu fasse la suppression effective à la sortie de la boucle.
En fait ce que je voulais faire prend un temps fou
j'avais une liste de strings entre 100000 et 200000 strings
je parcours la liste
avec le item de la liste je verifie
si condition A je veux retirer de la liste tous les mots contenant
le item
autrement Ajouter le item dans une autre liste
J'ai mis dans une boucle while
i = 0 dim item as string dim listret as new (of string) while i < listwords.count item = listwords(i) if function1(item) then listret.add(item) i+=1 else listwords = (From w In listwords Where Not w.Contains(item) Select w).ToList()
end if
end while
la boucle prend des heures
donc j'ai laissé tomber retirer de la liste tous les mots contenant le item
for each item in listwords if function1(item) then listret.add(item) end if next