Avatar billede jriff Nybegynder
06. marts 2006 - 10:17 Der er 11 kommentarer og
1 løsning

args[] of indexOf

Hej Alle!

Jeg er ved at lave en console application og skal bruge de argumenter der parses fra commandline. Jeg ved at det er args jeg skal bruge, men jeg mangler vist lidt forståelse for arrays i .NET.

args[0] er fint, men jeg vil også gerne evaluere på om en given string findes i args uanset position. Jeg har Googlet lidt på det og mener at jeg skal bruge noget i retning af:

if (args[].IndexOf("test"!=0)
{
    //Strengen findes
}

Men jeg får en "Syntax error, value expected" ved []?

- Jacob
Avatar billede kalp Novice
06. marts 2006 - 10:19 #1
ikke at jeg tror følgende virker

for(int i = 0; i < args.length; i++)
{
if (args[i].IndexOf("test"!=0)
{
    //Strengen findes
}
}

men du skal have en værdi i denne args[X] .. erstat X med et tal
Avatar billede kalp Novice
06. marts 2006 - 10:21 #2
for(int i = 0; i < args.length; i++)
{
if(args[i].equals("test"))
//Strengen findes

}

hvis duskal teste på om der findes ordet "test" i args listen.
Avatar billede jriff Nybegynder
06. marts 2006 - 12:55 #3
Er det virkelig den nemmeste måde at gøre det på? Jeg havde forestillet mig at .NET 2.0 ville være lidt smartere :-|
Avatar billede kalp Novice
06. marts 2006 - 12:56 #4
måske er .Net 2.0 smartere.. men jeg programmere ikke i .NET 2.0 så mit forslag er blot ud fra hvad jeg ved burde virke:)
Avatar billede jriff Nybegynder
06. marts 2006 - 13:01 #5
Ok.. det er også ok - jeg har brugt dit forslag i min kode - jeg er bare interesseret i at høre om der ikke er en nemmere måde. du ved - en én-linies løsning som kan bruges i en if-sætning. Med dit forslag er det svært at eksekvere kode hvis IKKE strengen findes:

bool b=false;
for (int t=0;t<args.length;t++)
{
  if (args[t]=="test")
    {
      b=true;
    }
}

if (!b)
{
  //Do something
}

Det er bare meget langt og besværligt i forhold til noget á la:

if (args[].IndexOf("test")>0)
{
  //Do something
}

Jeg ved godt at ovenstående ikke virker, men det giver vel idéen om hvor nemt jeg mener det burde kunne gøres :-)
Avatar billede kalp Novice
06. marts 2006 - 13:12 #6
ved ikke lige om denne rekursive funktion vil fungere:P
men du kan jo forsøge..

find(0);


public void find(int nr)
{
if(args[nr] == "test")
b = true;
else
{
if(nr < args.length)
find(nr+1);
}
}


om ikke andet så sagde du før at det var et problem hvis ikke strengen findes.. men hvorfor?
Avatar billede arne_v Ekspert
06. marts 2006 - 14:30 #7
if (args.IndexOf("test") >= 0)
{
  //Do something
}

boere virke i .NET 2.0
Avatar billede arne_v Ekspert
06. marts 2006 - 14:31 #8
hov nej - den er static

if (Array.IndexOf(args, "test") >= 0)
{
  //Do something
}
Avatar billede jriff Nybegynder
06. marts 2006 - 15:58 #9
Arne - du er for sej :-) Det var lige det jeg skulle bruge!

Hvad betyder det at den er static? Jeg bruger det selv når jeg skal lave en funktion som jeg kan kalde uden at oprette en instans af en klasse, men i det her tilfælde kan jeg ikke lige se hvad det betyder. Og smid så et svar.
Avatar billede arne_v Ekspert
06. marts 2006 - 16:04 #10
static betyder bare at den kaldes paa klassen og ikke paa en instans

altsaa at IndexOf kaldes paa Array klassen fremfor arr instansen

og jeg kan ikke lige gennemskue hvorfor de har valgt en static med 2 argumenter
fremfor en ikke static med 1 argument her

og svar
Avatar billede jriff Nybegynder
06. marts 2006 - 16:14 #11
Arne> Takker mange gange for hjælpen

kalp> Også mange gange tak til dig for forslaget. Som du kan se var det ikke helt det jeg søgte.
Avatar billede kalp Novice
06. marts 2006 - 17:57 #12
Udmærket:) Jeg kendte ikke funktionen:P men det gør jeg nu;)
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