Avatar billede madsbirk Nybegynder
24. september 2004 - 14:27 Der er 13 kommentarer og
1 løsning

Regular Expression - Jeg forstår det sku' ikke helt.

Hej

Jeg er ved at lave et lille program der skal læse i en tekst fil og bagefter vise et given resultat på skærmen.

Sagen er den at jeg har et inputfelt hvor man indtaster et søgeord, jeg kunne så godt tænke mig at resultatet indeholder søgeordet, altså hvis man søger på 12 får man 123 og 312 men ikke 321 !

Her er hvor langt jeg er kommet:

        private void button1_Click(object sender, System.EventArgs e)
    {
        label2.Text = "Du skrev: " + textBox1.Text;
    string sBox = textBox1.Text;
    textBox1.Text = sBox;

    StreamReader objReader = new StreamReader("\\My Documents\\En.txt");
    string sLine;
    while ((sLine = objReader.ReadLine()) != null)
    {
    string[] Linje = sLine.Split('\t');
    string field0 = Linje[0];
    string field1 = Linje[1];
    string field2 = Linje[2];
    string field3 = Linje[3];
    string field4 = Linje[4];
    if (field0 == sBox)
    {
    MessageBox.Show(field0);
    label3.Text = field0 + " - " + field2 + " - " + field4 + "\n";
    }
    progressBar1.Value ++;
    }
}

Håber der er nogen der vil hjælpe !
På forhånd tak !

/Mads
Avatar billede jakobandersen Nybegynder
24. september 2004 - 14:36 #1
I den løkke tester du blot ved hver linie om den indeholder søgekriteriet, hvis det blot skal være en simpel søgning som du antyder uden * osv. så kan du bruge indexOf:

while ((sLine = objReader.ReadLine()) != null){
    //hent fra fil
    if(field0.indexOf("12") > -1){
      //Udskriv
    }
    //progressbar
}
Avatar billede Syska Mester
24. september 2004 - 14:42 #2
Hvordan vil du lave en progressbar her?

Det kan du vel kun gøre hvis du ved hvor mange linier den skal igennem inden du starter while løkken?

// ouT
Avatar billede madsbirk Nybegynder
24. september 2004 - 14:44 #3
Ved det godt, så langt er jeg ikke kommet endnu :-)
Indtil videre har jeg bare fastsat antal linjer, der passer til antal linjer i min fil.

/Mads
Avatar billede madsbirk Nybegynder
24. september 2004 - 14:53 #4
Øhh, jeg får bare denne besked "'string' does not contain a definition for øindexOf'" når jeg indsætter "if(field0.indexOf("sBox") > -1)" i mit script.
Er der noget jeg mangler, eller bare ikke forstår ?

Nu ser det sådan du:
    if(field0.indexOf("sBox") > -1)
    {
    MessageBox.Show(field0);
    label3.Text = field0 + " - " + field2 + " - " + field4 + "\n";
    }

/Mads
Avatar billede Syska Mester
24. september 2004 - 15:00 #5
sBox.ToString(); og uden ""

også nu, men er ved at lære det
Avatar billede madsbirk Nybegynder
24. september 2004 - 15:04 #6
Men det hjælper ikke på problemet ang. "'string' does not contain a definition for 'indexOf'" den fejl kommer nemlig stadig !
Nu ser min kode sådan ud:
    if(field0.indexOf(sBox.ToString()) > -1)
    {
    label3.Text = field0 + " - " + field2 + " - " + field4 + "\n";
    }
Avatar billede Syska Mester
24. september 2004 - 15:31 #7
Nu har jeg ikke lige en Visual foran mig, men måske kunne det være noget ala:
if(field0.ToString().indexOf(sBox.ToString()) > -1)
Avatar billede arne_v Ekspert
24. september 2004 - 18:19 #8
Det her er vel C# og ikke Java ?

Så er det IndexOf ikke indexOf !
Avatar billede Syska Mester
24. september 2004 - 19:51 #9
hmm, jeg har også lige prøvet at lave noget i C#, men kan slet ikke få det til at virke, her er min kode til det, sammen med det har jeg 2 input bokse:

MessageBox.Show(text.ToString().IndexOf(ord.ToString()).ToString());

ord, hvor værdien er: skal
text, hvor værdien er: det er her jeg skal søge

men den finder slet ikke ord skal, hvis jeg laver det hele inde i programmet med string types, så virker det fint nok, hvad er det lige jeg gør galt her.....
Jeg får bare "-1" ud i min MessegeBox :-(

// ouT
Avatar billede arne_v Ekspert
24. september 2004 - 19:53 #10
Skal der ikke bruges:¨

MessageBox.Show(text.Text.IndexOf(ord.Text).ToString());

?
Avatar billede Syska Mester
24. september 2004 - 20:12 #11
ahhh, det kan du jo have ret i, tror jeg skal vælte mig selv over i sengen :-(

Er sq ved at være træt kan jeg mærke når jeg ikke selv kan opdage så simple fejl

out og takker
Avatar billede madsbirk Nybegynder
27. september 2004 - 09:51 #12
Yes nu virker det !!!
Min kode ser sådan ud nu:
    if(field0.ToString().IndexOf(sBox.ToString()) > -1)
    {
    label3.Text = field0 + " - " + field2 + " - " + field4 + "\n";
    }
    progressBar1.Value ++;

Men nu har jeg fået et andet problem, "label3" bliver ikke til skrevet men over skrevet, så jeg får kun det sidste resultat printet så skærmen !
Er der nogen der kan hjælpe, jeg vil gerne have alle resultaterne printet.

/Mads
    }
Avatar billede madsbirk Nybegynder
28. september 2004 - 14:24 #13
Ok, man kan vel heller ikke blive ved med at stille spørgsmål i samme tråd, "buzzzz" kan du ikke lige sende et svar, så jeg kan komme af med nogle point !
Jeg vil også lige sige tak til alle der har hjulpen i denne tråd !!!

/Mads
Avatar billede Syska Mester
28. september 2004 - 14:26 #14
joda, men synes Arne skal have de fleste, trods alt ham der er guden til C# på www.exp.dk :-P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester