09. april 2005 - 15:38Der er
27 kommentarer og 1 løsning
Søge i tekststreng
Hvordan søger jeg enklest efter forekomster af et ord i en tekststreng?
Eks: Jeg har en tekststreng som indeholder en tekst på 1000 tegn. Jeg ønsker at undersøge om teksten "eksperten" findes i strengen. Hvordan gøre dette enklest?
midlertidig = søgestreng if søgestreng = replace(midlertidig, "eksperten", "") then '"eksperten" findes ikke i søgestrengen else '"eksperten" findes end if
jsc >> Problemet med dit foreslag er jo at den går hele strengen "midlertid" igennem og når den finder "eksperten" så retter den det til "" ... Er vel ikke smart at den sletter søgeordet ;o)
jsc >> hehe sorry jeg må åbne øjnene . Jeg så kun din if og af en og anden grund ikke at du hev den midlertidig ud.. Så ja..enig i at det ikke skader når det ikke er den "rigtige" streng der laves replace på :o)
jsc >> replace ændrer ikke strengen ... if sætningen sammenligner og tildeler ikke Replace returnerer en streng hvor "eksperten" er skiftet ud Den ændrer den kun hvis du tildeler den returnerede streng til søgestrengen :o)
ja okay, fair... havde jeg ikke lige set, men det ville da være fuldstændig tåbeligt at gøre som plx, hvis man gør det på min metode... - det bliver uoverskueligt
Det er jo forskelligt hvad folk synes er overskueligt.. Jeg synes fx det er mere overskueligt at undersøge om noget er i en streng ved at bruge den funktion som findes til det ;o) Men bortset fra det ja..så er replace da også en dejlig funktion :o)
kendte den ikke - men sidder lige og læser om den, og den har en smart ekstra funktion... den kan springe x antal tegn over, hvis man "kender" noget af den i forvejen... instr(xx, streng, ord) - det var da også meget nyttigt...
replace er udelukkende god til at erstatte (siger sig selv) - så med mindre jeg lavdede google forfra, så ville jeg nok til at starte med jeres instr()... - replace er jo bare så smart, at den kan sætte noget html kode ind, så ordet f.eks. bliver FED eller KURSIV osv. - det har jeg brugt meget til mine søgefunktioner på mine sider og databaser.
for at blive ved med at ævle: ovennævnte instr() funktion finder kun den første forekomst, så hvis der er flere forekomster, og du skal have positionen af alle forekomster vil den jo give et falsk svar..
yes men så kan man jo sætte en løkke på og for hver forekomst lave en instr(start,streng,søgeord) og så kan man endvidere tælle op på antal forekomster :o)
så må du til at lave en løkke: position = 0 for t = 1 to ubound(streng) position = instr(position, streng, "eksperten") positioner = positioner & position & ";" next
'positioner af eksperten: positioner = split(positioner, ";")
for t = 0 to ubound(positioner) - 1 response.write positioner(t) next
jsc >> ja nemlig ja :o) eneste minus jeg ser er tilfældet hvor ordet ikke findes Så har man en for løkke som måske er meeeget lang Eller ja det har man jo uanset hvad Så hvis jeg skulle gøre det ville jeg nok lave en funktion som kaldte sig selv hvis der blev fundet en position forskellig fra 0
et andet minus ved sidste funktion, er vel også at hvis ordet først findes på position 9000 kører løkken 9000 gange inden den finder første, derefter kører løkken så også det antal gange som ordet er langt(hvor der ikke kan findes nye forekomster) og så kører løkken ellers indtil man er nået til strengen slut. Jeg ved godt der ikke er så meget cpu-sug på den løkke, men alligevel. der skal på en eller anden måde laves en rekursiv forespørgsel
Synes godt om
Ny brugerNybegynder
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.