Undersøg hvor mange gange et ord optræder i en streng?

Tags:    vb.net

Hej Alle

Jeg er lige begyndt på VB.net og har et lille problem, som det ikke er lykkedes mig at finde en løsning på online.

Jeg har lavet en richtextbox hvor brugeren kan indsætte et tekststykke. Herefter vil jeg gerne fortælle brugeren hvor mange gange et bestemt ord optræder i teksten.

Lad os nu sige at jeg ønsker at undersøge en streng for hvor mange gange ordet "fisk" optræder. Hvad kunne man gøre?

Jeg kan næsten gætte mig til at jeg skal bruge en eller anden funktion, sammen med en løkke af en art.

Håber i kan hjælpe!

Mvh Peter



Én måde at gøre det på, ville være at splitte strengen op ved hvert mellem rum også tjekke hvert enkel substring for om den var = "fisk".

Har kigget lidt i .NET documentationen. Denne funktion burde virke: http://msdn.microsoft.com/en-us/library/system.string.split.aspx

Kan godt være der er bedre måder at gøre det på (regular expressions???)



Altså du skal gøre noget i retningen af hvad Andreas siger, altså splitte din streng ved hvert mellemrum, og derefter køre det Array du får ud af det, igennem et loop (der skal du bruge noget uBound kunne jeg forestille mig) og så sammenligne det "bestemte ord" altså i dette tilfælde "fisk" med den streng du er nået til ;)

Jeg koder ikke selv vb.net, men C#.net så kan ikke sige helt hvordan det virker, men det er i hvert fald den måde jeg ville gøre det på ;)

Ved ikke om der findes en inString funktion der kan returnere hvor mange gange ordet optræder, eller om den kun kan returnere OM ordet optræder ;)



Hej Andreas og Simon

Mange tak for jeres svar! Jeg tænkte nok at det var noget i den stil!

Der findes vidst en instr() funktion, som returnerer 0 eller 1. Den kunne jeg vel bruge i et loop efter at jeg har splittet strengen!

Skulle bare lige bruge et skub ;)

Tak!

- Peter



hvis du først har splittet strengen, er det lige så let bare at undersøge om den del af dit array du er noget til er = "fisk" ;)

Men du finder ud af det ;)



Nå ja, selvfølgelig!

Og så er det jo bare at lægge 1 til en count variabel for hver gang ordet optræder..



Nemlig ;)

Altså noget i stil med:

someStr = "Her er en streng med mange fisk I. Jeg kan godt lide fisk til frokost og fisk til aften"

Hvorefter du kører en
string [] someStrSplit = someStr.Split(" ")
// eller hvordan det nu ser ud i vb.net
int countFish

Så kører du et loop:
for i=0 to i>someStrSplit.Ubound;i++
if(someStrSplit[i ] == "fisk"){
countFish += 1;
}
Next

Jeg ved ikke om det ser sådan ud, men det er noget i den stil ;)



Indlæg senest redigeret d. 02.02.2010 19:17 af Bruger #8773
t