quentin: wie oft kommt string x in string y vor?

hallo zusammen!

ich habe vor eine kleine statistik auf meiner homepage anzubringen, die ausgibt welcher songtext der längste ist und welcher der kürzeste. soweit so gut, das habe ich mit len() ja sofort hinbekommen.

jetzt möchte ich aber herausfinden, wie oft ein bestimmtes wort "asdf" (als beispiel, wieviele lyrics mit dem wort asdf gibts denn schon ;) in dem text vorkommt... der text selbst befindet sich in einer datenbank und wird natürlich über ein recordset angesprochen...

als simples beispiel: "das ist ein text, ein kurzer" und ich suche nach "ein"

herauskommen soll die zahl 2, da ja "ein" zweimal vorkommt ;)

könnt ihr mir da bitte helfen?

dank schon mal im voraus ;)

mfg
quentin

  1. Hi,
    machs einfach über ne While-Schleife - immer nachschaun, ob in "text" der Suchtext ist und dann den "text" ab der Position wo der String gefunden wurde neu setzen...

    p=instr(text,"blabla")
    Do While (p>0)
    text=right(text,instr(text,"blabla")
    p=instr(text,"blabla")
    n=n+1
    loop

    ich hoffe, so klaptt das irgendwie :)
    ausgabe: blabla ist n mal in text enthalten

    CU

  2. Hallo Quentin!

    jetzt möchte ich aber herausfinden, wie oft ein bestimmtes

    wort "asdf" (als beispiel, wieviele lyrics mit dem wort asdf gibts denn schon ;) in dem text vorkommt... der text selbst befindet sich in einer datenbank und wird natürlich über ein recordset angesprochen...

    als simples beispiel: "das ist ein text, ein kurzer" und ich suche nach "ein"

    herauskommen soll die zahl 2, da ja "ein" zweimal vorkommt ;)

    könnt ihr mir da bitte helfen?

    Man nehme sich einen Record, bzw. einen Text, der nach einem Wort durchsucht werden soll in einen String.

    Dort kann man dann mit instr(string,"ein") nach der Position des ersten "ein" innerhalb des Strings suchen.

    Soll die Groß-/Kleinschreibung keine Rolle spielen hilft sowas wie instr(Ucase(string),Ucase("ein")) bzw. instr(Ucase(string),"EIN")

    Danach schneidet man den linken Teil des Strings inklusive dem "ein" ab und sucht im Rest wieder nach dem 1. ein...

    etwa so:
    pos1=instr(string,"ein")
    string = right(string,len(string)- pos1 + 1 - len("ein"))

    Gibt instr() 0 zurück, so existiert das gesuchte Wort nicht mehr und die Schleife wäre beendet.

    Ausprogrammieren tue ich das jetzt nicht. Es ist auch nicht unbedingt das schnellste, funktioniert aber.

    Was anderes wäre es, Du möchtest eine Statistik über alle im Text enthaltenen Worte... dann würde ich den Text in Worte zerteilen, die gefundenen Worte dann in ein Array speichern und falls es dort schon vorhanden wäre das Vorkommen hochzählen. Das wäre allerdings noch lahmer, wenn es einem im Endeffekt nur um ein Wort geht.

  3. ok ich werd mal schaun ob ich das so realiseren kann.

    danke euch beiden auf alle fälle jetzt schon :))

    cheers
     quentin