Avatar billede ungermand Nybegynder
31. august 2004 - 14:42 Der er 6 kommentarer og
1 løsning

Flere forekomster af substreng i streng vha IndexOf

Dette er bare et eksempel...

Men jeg har en streng bestående af ordene lille, stor, lille og stor. Jeg vil gerne finde positionen på ordet stor, og bruger str.IndexOf("stor");

Denne returnerer pos. 6, men hvad gør jeg hvis jeg gerne vil have returneret positionen på anden forekomst af "stor"?

Lige lidt kode:

public class WebForm2 : System.Web.UI.Page
{
    private string str = @"lille\stor\lille\stor";

private void Page_Load(object sender, System.EventArgs e)
{
    int pos = str.IndexOf("stor");
    if (pos != -1)
   
Response.Output.Write("Ja den indeholdes ved pos.  {0}", pos);
    else
    Response.Write("nej");
    Response.End();           
}
}
Avatar billede ungermand Nybegynder
31. august 2004 - 14:43 #1
lige en tilføjelse...

Jeg vil gerne have positionen på BEGGE forekomster af "alle" (og andre forekomster hvis andre findes)
Avatar billede arne_v Ekspert
31. august 2004 - 14:48 #2
int offset = 0;
int ix;
while((ix = str.Substring().IndexOf("noget", offset)) >= 0)
{
  // offset+ix indeholder "noget"
  offset += ix;
}
Avatar billede arne_v Ekspert
31. august 2004 - 14:48 #3
Hov.

int offset = 0;
int ix;
while((ix = str.IndexOf("noget", offset)) >= 0)
{
  // offset+ix indeholder "noget"
  offset += ix;
}
Avatar billede arne_v Ekspert
31. august 2004 - 14:49 #4
(den Substring skulle ikke med fordi der var argument nummer 2 til IndexOf)
Avatar billede arne_v Ekspert
31. august 2004 - 18:14 #5
OK ?
Avatar billede ungermand Nybegynder
02. september 2004 - 09:50 #6
Hrm... nej, kan ikke få det til at virke. Men fandt ud af, at jeg kun kommer ud for at skulle bruge den sidste forekomst af ordet og bruger istedet LastIndexOf... Men tak alligevel :)
Avatar billede arne_v Ekspert
04. september 2004 - 11:06 #7
Koden var heller ikke helt rigtig.

Her er en version som virker:

using System;

class MainClass
{
    public static void Main(string[] args)
    {
        string str = "abc def abc def abc def";
        string fnd = "abc";
        int offset = 0;
        int ix;
        while((ix = str.IndexOf(fnd, offset)) >= 0)
        {
            Console.WriteLine(ix);
            offset = ix + fnd.Length;
        }
    }
}
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