Avatar billede ducks Nybegynder
17. januar 2004 - 14:18 Der er 8 kommentarer og
1 løsning

Find ord og udskriv hele linien

Hvordan gør man sådan at hvis et ord var i en streng, så skriver den hele linien? Linierne bliver delt mellem vbCrLf da det kommer fra et textarea. Noget lign:

Do Until RS.EOF
  If string like &"%"& RS("ord") &"%"& Then //Rigtigt at skrive &"%"&?
    //Udskriv hele den linie hvor ordet var i
  End If
  RS.MoveNext
Loop
Avatar billede Slettet bruger
17. januar 2004 - 14:27 #1
If Instr("Ja det er godt med dig", "dig") > 1 then
' den var god nok
End if
Avatar billede ducks Nybegynder
17. januar 2004 - 14:29 #2
Hvad mener du?

Jeg bliver da nødt til at have strengen med ordende inkluderet, så det kan da ikke være andet end if streng like "%ord%" then.
Avatar billede Slettet bruger
17. januar 2004 - 14:33 #3
LIKE er en SQL kommando som du ikke kan bruge i asp direkte. Det tilsvarende er er Instr() funktionen, der bruges ligesom jeg viste før :)

If Instr(din_string_variabel, rs("ord")) > 1 then
response.write din_string_variabel
End if
Avatar billede ducks Nybegynder
17. januar 2004 - 14:36 #4
På den måde, så ikke lige ,"dig" i den første :)
Avatar billede ducks Nybegynder
17. januar 2004 - 14:42 #5
Men hvordan gør man sådan at den kun skriver den linie ud? Fx skal den kun skrive "med"

<%
streng = "hej"& vbCrLf &"med"& vbCrLf &"dig"
find = "med"

If Instr(streng,find) > 1 Then
  Response.Write(Replace(streng, vbCrLf, "<br>"))
End If
%>

Så står der:

hej
med
dig

:(
Avatar billede ducks Nybegynder
17. januar 2004 - 14:55 #6
Tror jeg har løst den sådan:

<%
streng = Request.Form("tekst")
find = "med"

streng = Split(streng,vbCrLf)

i = 0

For Each Item In streng

  If Instr(streng(i),find) > 1 Then

    Response.Write(streng(i) &"<br>")

  End If

  i = i + 1

Next
%>
Avatar billede ducks Nybegynder
17. januar 2004 - 15:18 #7
Men det virker ikke når jeg sætter det sammen med en database, den vil ikke finde ordene i databasen:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("hjt.mdb")

Set RS = Server.CreateObject("ADODB.Recordset")
SQL = "Select * From words"
RS.Open SQL, Conn, 3, 3

RS.MoveFirst

streng = Request.Form("tekst")
streng = Split(streng,vbCrLf)
find = array("R0", "hej", "med")

i = 0

For Each Item In streng
  Do Until RS.EOF

    find = RS("Errors")
    If Instr(streng(i),find) > 1 Then
      Errors = Errors & streng(i) &"<br>"
    End If

    Response.Write(find &"<br>"& streng(i))

    find = RS("Maybe")
    If Instr(streng(i),find) > 1 Then
      Maybe = Maybe & streng(i) &"<br>"
    End If

    RS.MoveNext
  Loop

  i = i + 1
Next

Response.Write("<br><br><br>"& Errors)
%>
Avatar billede Slettet bruger
17. januar 2004 - 15:57 #8
Hmm, mon ikke det er du ikke kører løkken på baggrund af arrayet med ord?

Prøv at bruge

For i = LBound(find) to UBound(find) i stedet.
Avatar billede ducks Nybegynder
17. januar 2004 - 21:34 #9
Det virkede :D
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