Avatar billede aero Nybegynder
18. december 2005 - 17:43 Der er 11 kommentarer og
1 løsning

søg efter ord i en tekst

hvis jeg har

strtext = "Dette er en lille testfejl, Fejlen er ikke så stor"

hvordan kan jeg så lave noget som vil søge efter fejl og ikke Fejl og hvis fejl findes i teksten (som det gør) så skal den sætte strord = Rigtigt.
Avatar billede softspot Forsker
18. december 2005 - 17:51 #1
Du kan lave case sensitiv søgning i en streng med instr. Det er vist noget i stil med:

instr(1, strtext, "fejl", vbTextCompare)
Avatar billede softspot Forsker
18. december 2005 - 17:54 #2
...og hvis det ikke fungerer med vbTextCompare så prøv med værdien 1 i stedet.
Avatar billede aero Nybegynder
18. december 2005 - 18:09 #3
http://www.billundfodbold.dk/instr.asp

er mit resultat med værdien 1 men hvordan ville en if sætning se ud hvis jeg ville side at hvis fejl findes så strord = "ja" og hvis ikke men test findes så strord = "jaja"
Avatar billede softspot Forsker
18. december 2005 - 18:34 #4
Jeg er ikke sikker på at jeg helt forstår hvad du mener...

Kunne det være:

if instr(1, strtext, "fejl", 1) > 0 then
  ' Så findes teksten...
  strord = "ja"
else
  ' så findes teksten ikke...
  strord = "jaja"
end if
Avatar billede aero Nybegynder
18. december 2005 - 18:58 #5
den skal kunne komme med 3 eller flere muligheder evt hvis vi laver fejl om til script så har vi i en if sætning den der finder fejl hvis fejl er ok så ja og ellers gå videre og hvis den finder script i stedet så JAJA osv. osv. sådan at man kan give den forskellige tekster hvor fejl evt er blevet til script eller code osv osv.
og alt efter om den finder fejl/script eller code så gør den 3 forskellige ting evt. JA/JAJA/JAJAJO

håber du forstår det nu, og beklager at jeg er lidt dårlig til at forklare det jeg tænker he he ^^
Avatar billede softspot Forsker
18. december 2005 - 19:15 #6
Ja, jeg må indrømme at jeg har lidt svært ved at gennemskue hvad du mener, men vil dog lige forsøge at skitsere den løsning jeg tror du er ude efter...

Du kan lave to arrays eller strenge som indeholder søgetekster hhv. fejltekster og så lave en løkke der undersøger hovedtekten for de enkelte delteksters eksistens og udskriver den tilhørende fejltekst. Noget i stil med dette:

strHovedtekst = "Dette er den tekst som skal undersøges for eksistens af deltekster"
strDeltekster = "fejl|script|eksistens|tekst"
strMatchtekster = "Der findes fejl|Script er ikke tilladt|Eksistens er bekræftet|Tekst skal indeholde script"

matchFundet = false
arrDeltekst = split(strDeltekst, "|")
arrMatchtekster = split(strMatchtekster, "|")
for i = 0 to ubound(arrDeltekst)
  if instr(1, strHovedtekst, arrDeltekst(i), 1) > 0 then
    response.write arrMatchtekster(i)
    matchFundet = true
    exit for ' afslut løkke => Vis ikke flere tekster
  end if
next

if not matchFundet then
  ' Hvis der ikke blev fundet nogle match, udskrives denne tekst
  response.write "Teksten er OK"
end if
Avatar billede aero Nybegynder
18. december 2005 - 19:45 #7
Hvis vi nu siger jeg har 4 tekster i min DB alt efter hvad der hentes så er strtext = denne
teksterne kunne være:
"Dette er en lille testfejl, Fejlen er ikke så stor"
"Dette er en lille testcode, Coden er ikke så stor"
"Dette er en lille testscript, Scriptet er ikke så stort"
"Dette er en lille testside, Siden er ikke så stor"

så kunne jeg godt tænke mig et script som er universalt forstået på den måde at den er ligeglad men hvilken tekst den får, idet at:
Hvis den finder "fejl" så er strord = "Ida"
finder den ikke ordet "fejl" men går videre og finder ordet "code" så er strord = "Brian". og finder den heller ikke det ser den efter ordet "script" som gør at strord er = "Finn" og sidst men ikke mindst så hvis den ikke finder nogle af de 3 ting så søger den efter "side" som gør at strord = "Lise".

den søger altså efter alle disse ting i teksten og hvis den finder et af ordene få sætter den strord = det ord som den skal når den har fundet det den søger efter:
Søger efter "fejl" if true så er strord="Ida"
Søger efter "code" if true så er strord="Brian"
Søger efter "script" if true så er strord="Finn"
Søger efter "side" if true så er strord="Lise"

i en tekst vil der ikke kunne være mere end et ord, så den vil ikke kunne finde både "fejl" og "script" så strord derfor er = "Ida og Finn" der vil kun kunne forkomme et af ordene.

håber det hjalp med forklaringen..
Avatar billede softspot Forsker
18. december 2005 - 20:01 #8
OK, men så har jeg stort set ramt plet med den løsning jeg skitserede ovenfor. Her er en version som er lidt mere "general purpose":

Function FindTekst(strHovedtekst, strDeltekster, strMatchtekster)
  ' strDeltekster er de tekster der skal findes og adskilles med |
  ' strMatchtekster er de tekster der skal returneres i tilfælde af match med en
  '    deltekst. Matchtekstens position skal passe med deltekstens.
  FindTekst = ""
  arrDeltekster = split(strDeltekster, "|")
  arrMatchtekster = split(strMatchtekster, "|")
  for i = 0 to ubound(arrDeltekst)
    if instr(1, strHovedtekst, arrDeltekst(i), 1) > 0 then
      FindTekst = arrMatchtekster(i)
      exit for ' afslut løkke => Check ikke flere tekster
    end if
  next
End Function

Så kunne denne funktion f.eks. anvendes således:

set rs = conn.execute("SELECT tekst FROM tabel")
do while not rs.eof
  Response.Write FindTekst(rs("tekst"),"fejl|script","Ida|Finn")
  rs.movenext
loop
rs.close
Avatar billede aero Nybegynder
18. december 2005 - 20:23 #9
ja du har ret efter dit sidste eks så fattede jeg det mange tak igen, læg venligst et svar.
Avatar billede softspot Forsker
18. december 2005 - 20:56 #10
Jamen, så gør jeg det - velbekomme :)
Avatar billede aero Nybegynder
18. december 2005 - 21:03 #11
takker igen ^^
Avatar billede softspot Forsker
18. december 2005 - 21:39 #12
...og jeg takker for point - igen :)
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
Kurser inden for grundlæggende programmering

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