Avatar billede steen Nybegynder
05. maj 2005 - 20:53 Der er 15 kommentarer og
2 løsninger

mangler forståelse for IndexOf

Jeg har nedenstående funktion, som kaldes når der er indtastet tekst i tekstfeltet. Min label skal derefter blot skrive om der blev fundet et a, b eller c i teksten.

Men hvad gør jeg forkert, for lige meget hvad jeg skriver returnerer den hvergang at der ikke var nogle forekomster af a, b eller c

-----------------------

        private void btnKaldfunktion_Click(object sender, System.EventArgs e)
        {
            string strIndput = txtInddata.ToString();
            if((strIndput.IndexOf("a") != -1) | (strIndput.IndexOf("b") != -1) | (strIndput.IndexOf("c") != -1))
            {
                lblResultat.Text = "Indput indeholdte ikke a, b eller c";
            }
            else
            {
                lblResultat.Text = "Indput indeholdte a, b eller c";
            }
        }

-------------------

mvh. Steen
Avatar billede arne_v Ekspert
05. maj 2005 - 20:58 #1
Prøv:

            if((strIndput.IndexOf("a") < 0) && (strIndput.IndexOf("b") < 0) && (strIndput.IndexOf("c") < 0))
            {
                lblResultat.Text = "Indput indeholdte ikke a, b eller c";
            }
            else
            {
                lblResultat.Text = "Indput indeholdte a, b eller c";
            }
Avatar billede thesurfer Nybegynder
05. maj 2005 - 21:00 #2
Skal det ikke være "||" (2x |) som i JavaScript?
Avatar billede arne_v Ekspert
05. maj 2005 - 21:03 #3
Som jeg forstår logikken så skal det være

(a findes ikke i strengen) OG (b findes ikke i strengen) OG (c findes ikke i strengen)
Avatar billede thesurfer Nybegynder
05. maj 2005 - 21:08 #4
"Min label skal derefter blot skrive om der blev fundet et a, b eller c i teksten."

Jeg tror, at hvis bare 1 af bogstaverne optræder i teksten, skal der stå "input indeholdte a, b eller c"..
Avatar billede arne_v Ekspert
05. maj 2005 - 21:11 #5
netop

:-)
Avatar billede thesurfer Nybegynder
05. maj 2005 - 21:14 #6
Men 05/05-2005 21:08:15 er jo ikke det samme som 05/05-2005 21:03:25 ..?

Hvis det havde været JavaScript havde det nok været sådan her:

if ( (strIndput.IndexOf("a") != -1) || (strIndput.IndexOf("b") != -1) || (strIndput.IndexOf("c") != -1) ) {
  // fundet 1 eller flere bogstaver
} else {
  // ingen af bogstaverne
}
Avatar billede steen Nybegynder
05. maj 2005 - 21:15 #7
Efter jeg har læst hvad i har skrevet, tror jeg at jeg er kommet frem til en forklaring... istedet bør jeg jo spørge på:

Hvis: (a findes i strengen) eller (a findes i strengen) eller (a findes i strengen)
Så: Skriv til label at der blev fundet en forekomst af a, b eller c

Er det ikke der fejlen er placeret?
Avatar billede thesurfer Nybegynder
05. maj 2005 - 21:16 #8
steen> Du har vist brugt Copy&Paste.. :-)
Avatar billede thesurfer Nybegynder
05. maj 2005 - 21:16 #9
&& = og = alle/ingen
|| = eller = en af dem
Avatar billede arne_v Ekspert
05. maj 2005 - 21:18 #10
if((strIndput.IndexOf("a") >= 0) || (strIndput.IndexOf("b") >= 0) || (strIndput.IndexOf("c") >= 0))
            {
                lblResultat.Text = "Indput indeholdte a, b eller c";
            }
            else
            {
                lblResultat.Text = "Indput indeholdte ikke a, b eller c";
            }

virker helt lige som mit forslag
Avatar billede arne_v Ekspert
05. maj 2005 - 21:19 #11
thesurfer>

det mener jeg da

når man vender et test om bytter man også rundt på && og ||
Avatar billede thesurfer Nybegynder
05. maj 2005 - 21:20 #12
Så *skal* det altså være 2x "|" :-)

I JavaScript returnerer den "-1", hvis tegnet ikke findes.. hvad retunerer ASP.NET?
Avatar billede steen Nybegynder
05. maj 2005 - 21:21 #13
thesurfer: ja... det er der jo nok noget om ;-). Jeg forsøgte at lave et simpelt eks. til brug her, istedet for at poste det hele.

Tak for hjælpen begge to... hit med et svar og i skal modtage lidt point ;-)
Avatar billede thesurfer Nybegynder
05. maj 2005 - 21:22 #14
OK :-)

arve_v> Jeg er bare vant til "!= -1 ||"-metoden.. der er flere måder at gøre tingene på.. :-)
Avatar billede arne_v Ekspert
05. maj 2005 - 21:25 #15
Det skal være enten || eller && alt afhængig af hvordan man vender testen.

.NET IndexOf returnerer også -1 hvis den ikke findes
Avatar billede arne_v Ekspert
05. maj 2005 - 21:25 #16
svar
Avatar billede thesurfer Nybegynder
05. maj 2005 - 21:37 #17
Takker for points :-)
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