teller in een foreach

Status
Niet open voor verdere reacties.

pattex007

Gebruiker
Lid geworden
26 jan 2010
Berichten
15
hallo

ik probeer een programma te maken die in een textfile gaat kijken hoeveelkeer een bepaalde woord voorkomt
Code:
   public int fraudSeeker(string dir)
        {
            StreamReader testTxt;
            string allRead = "";
            int count = 0;
            testTxt = new StreamReader(@dir);
            allRead = testTxt.ReadToEnd();//Reads the whole text file to the end
            testTxt.Close(); //Closes the text file after it is fully read.
            count = 0;
          
            foreach (String proces in processList())
            {
                if (Regex.IsMatch(allRead, proces))
                {
                    count = count + 1;
                }
                else
                {
                }
            }

            return count;

        }

en via een listbox wordt dan via selectedindexchanged bij het selecteren van het woord weergegeven hoeveel keer het voorkomt
Code:
    private void lstLogs_SelectedIndexChanged(object sender, EventArgs e)
        {
                      lblFraudCount.Text = checker.fraudSeeker(Convert.ToString(lstLogs.SelectedItem)) + "";

        }
probleem is dat het counter niet gereset wordt en voortdurend opgeteld bij het kiezen van een andere woord. Ik heb geprobeerd om voor de lus count = 0 te doen maar werkt niet
 
Even naar een variabele wegschrijven, zou ik zeggen ;)
 
De variable 'count' word in de method gemaakt en gebruikt, het probleem zal daar niet zitten. Hij zal altijd 0 zijn bij het begin en nogmaals op 0 zetten hoeft niet.

probeer te debuggen om te kijken wat er daadwerkelijk gebeurt.

* ipv
Code:
count = count + 1;
kun je ook
Code:
count++;
doen

ook moet je even je streamreader disposen na het sluiten, of een using block gebruiken (zie code onder)
Code:
reader.Close();
reader.Dispose();

heb het zelf even wat geprobeerd misschien dat je er iets aan hebt:
Code:
    public class WordFinder
    {
        public int GetWordCount(string file, string searchWord)
        {
            int wordCount = 0;

            string fileContent = ReadFileToEnd(file);
            List<string> words = GetWords(fileContent);

            foreach (var word in words)
            {
                if (word.Equals(searchWord))
                    wordCount++;
            }

            return wordCount;
        }

        private string ReadFileToEnd(string file)
        {
            string content = "";

            if (File.Exists(file))
            {
                using (StreamReader reader = new StreamReader(file))
                {
                    content = reader.ReadToEnd();
                }
            }
            else
            {
                //do what you want to handle the non existing file
            }

            return content;
        }

        private List<string> GetWords(string file)
        {
            return new List<string>(file.Split(Convert.ToChar(" ")));
        }
    }
 
dank u wel voor uw antwoord ,

het werkt nog steeds niet ik krijg altijd als ik een andere woord kies of zelfs voortdurend naar dezelfde woord klik, wordt de counter met 3 verhoogd
 
Code:
foreach (String proces in processList())
            {
                if (Regex.IsMatch(allRead, proces))
                {
                    count = count + 1;
                }
                else
                {
                }
            }

dit is de enige plaats waar je de count hoger maakt, dus bekijk je processlist lijst nog eens goed,
maak je de lijst wel leeg voordat je hem vult met nieuwe data?
 
Code:
foreach (String proces in processList())
            {
                if (Regex.IsMatch(allRead, proces))
                {
                    count = count + 1;
                }
                else
                {
                }
            }

dit is de enige plaats waar je de count hoger maakt, dus bekijk je processlist lijst nog eens goed,
maak je de lijst wel leeg voordat je hem vult met nieuwe data?

gevonden :) inderdaad, mijn list te vergeten te clearen dank u wel voor uw oplossing
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan