Avatar billede karsten_larsen Praktikant
08. februar 2008 - 09:35 Der er 15 kommentarer og
2 løsninger

Tælle antal bestemte ord i en sætningsrække

Hvordan kan man tælle et antallet af ord i en sætning.

F.eks.

Dim str as String = ""
str = "Det var en dejlig dag, det var en dejlig dag,...."

Så antallet af "var" = 2

etc.

:-)?? karsten_larsen
Avatar billede jokkejensen Novice
08. februar 2008 - 09:39 #1
uden regex skal du nok bare løbe den igennem, og recursivt klippe af stregen ved IndexOf("var") og ligge 1 til en integer hver gang.

/JJ
Avatar billede jokkejensen Novice
08. februar 2008 - 09:40 #2
Private Sub CountWords()


        Dim strText As String = "It's a wonderful    world"
        Dim iCount As Integer


        Do While (strText.IndexOf(Space(2)) >= 0)
            strText = strText.Replace(Space(2), Space(1))
        Loop


        iCount = Split(strText, Space(1)).Length
        MsgBox(iCount.ToString())


    End Sub
Avatar billede karsten_larsen Praktikant
08. februar 2008 - 09:44 #3
øhh - giver det ikke antallet af ord og ikke det bestemte ord?
Avatar billede jokkejensen Novice
08. februar 2008 - 09:52 #4
jo, men tænkte der var lidt kreativitet:)

erstat spaces med din variable ?

/JJ
Avatar billede jokkejensen Novice
08. februar 2008 - 09:53 #5
jeg kan godt lave et C# eksempel.. men et vb.net vil tage for lang tid, så skal jeg til at sætte mig ind i syntax..

Kan du ikke bare selv tage en variable med ned i funktionen, og i stedet for Space(2) skrive den der..


/JJ
Avatar billede powerpunk Nybegynder
08. februar 2008 - 09:55 #6
i så fald får du også ord som 'varulv' og 'svar' med i matchen, det er vel ikke tanken...
hvad med noget i retning af:

  string str = "Det var en dejlig dag, det var en dejlig dag,....";
  string[] tokens = str.Split(' ');
  int numberOfMatches = Array.FindAll<string>(tokens, Test).Length;

hvor 'Test' er defineret som:

  public bool Test(string itemToTest)
  {
    return itemToTest.Equals("var", StringComparison.OrdinalIgnoreCase);
  }
Avatar billede jokkejensen Novice
08. februar 2008 - 10:04 #7
ikke med " var "..

/JJ
Avatar billede powerpunk Nybegynder
08. februar 2008 - 10:19 #8
Nej. men så fanger du den kun en gang i sætningen "Var du hjemme i går? Ja det var jeg." ;-)
Avatar billede nielle Nybegynder
08. februar 2008 - 10:20 #9
Der er vel ingen so har sagt at det skulle være uden regexp?

        Dim str As String = ""
        str = "Det var en dejlig dag, det var en dejlig dag,...."

        Dim antal As Integer = Regex.Matches(str, "\bvar\b", RegexOptions.IgnoreCase).Count
Avatar billede powerpunk Nybegynder
08. februar 2008 - 10:28 #10
Næh det er der selvfølgelig ikke :-). Regex eksemplet er bestemt også en fin og kompakt løsning.
Avatar billede jokkejensen Novice
08. februar 2008 - 11:01 #11
PP > ja, doh :)

nielle jo, for jeg skulle bestemt ikke til at skrive det i vb.net :), men kan godt se det kun er lidt syntax man skal have lært fra at kunne oversætte C# til vb.net..

/JJ
Avatar billede karsten_larsen Praktikant
08. februar 2008 - 11:33 #12
nielle vil du lave et svar for et brugbart svar på spørgsmålet? (70)

jokkejensen og powerpunk vil I også lave, da I gav mig inspiration til noget andet. (30 p)

Mange tak for hjælpen.

:-) karsten_larsen
Avatar billede powerpunk Nybegynder
08. februar 2008 - 11:59 #13
Velbekomme! :-)
Avatar billede jokkejensen Novice
08. februar 2008 - 12:07 #14
Narj tak, jeg var vist til mere forvirring end gavn :)
Avatar billede nielle Nybegynder
08. februar 2008 - 12:11 #15
Svar :^)
Avatar billede karsten_larsen Praktikant
12. februar 2008 - 10:31 #16
hmm - troede ellers man kunne give flere point.

-> powerpunk opretter lige et sp. til dig.

:-) karsten_larsen
Avatar billede nielle Nybegynder
12. februar 2008 - 16:25 #17
Takker for point.

Man kan sagtens give flere point, men det skal ske inden at man acceptere svar og dermed lukker spørgsmålet. Oppe i venstre side er der et punkt som hedder Funktioner og det er under det at du finder menupunktet.
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