Avatar billede sp Nybegynder
22. marts 2002 - 13:22 Der er 3 kommentarer og
1 løsning

Positioner for flere tegn i rækkefølge, sorteret (Lav < Høj)

Hej.

Jeg har brug for at den funktion finder flere positioner for både "t" og "e", og at positionerne kommer i rækkefølge så den det laveste tal er først og til sidst ender med det højeste.
Jeg har brugt InStr for at finde positioner.
Men jeg ved ikke hvordan jeg skal sammensætte det, så den returnerer flere positioner, istedetfor kun én position. Altså positionerne for de 2 tegn i rækkefølge


<%
Function Positioner(Tekst)
A_Start = 1
Tegn1 = "t"
Tegn2 = "e"

Do until A_Start >= Len(Tekst)

kChr  = InStr(A_Start, Tekst, Tegn1)
kChr  = InStr(A_Start, Tekst, Tegn2)


EndPos = kChr + 1


if Int(kChr) = Int(InStrRev(Tekst, Tegn1)) OR Int(LinkChr) = Int(InStrRev(Tekst, Tegn2)) then
    A_Start = Len(Tekst)
else
    A_Start = EndPos
  end if
  Positioner = EndPos

Loop

End Function
%>
</Head>
<Body>

<% =Positioner("Dette er en test. Tester ligenu.") %>

</Body>
</HTML>


M.v.h.
Søren Peter
Avatar billede jaller Nybegynder
22. marts 2002 - 15:05 #1
<%
Function Positioner(Tegn1, Tegn2, Tekst)
  Positioner = ""
  TmpTekst = Tekst
  Offset = 0

  Position1 = InStr(TmpTekst, Tegn1)
  Position2 = InStr(TmpTekst, Tegn2)

  do while (Position1 > 0) or (Position2 > 0)
    if (Position1 < Position2) and (Position1 > 0) then
      TmpTekst = Mid(TmpTekst, Position1 + 1)
      Offset = Offset + Position1
    else
      TmpTekst = Mid(TmpTekst, Position2 + 1)
      Offset = Offset + Position2
    end if
    Positioner = Positioner & CStr(Offset) + ","
    Position1 = InStr(TmpTekst, Tegn1)
    Position2 = InStr(TmpTekst, Tegn2)
  Loop

  Positioner = Mid(Positioner, 1, Len(Positioner) - 1)
End Function

%>

</Head>
<Body>

Positioner("t", "e", "Dette er en test. Tester ligenu.")<br>

<% =Positioner("t", "e", "Dette er en test. Tester ligenu.") %>

</Body>
</HTML>
Avatar billede sp Nybegynder
22. marts 2002 - 16:10 #2
Det fungerer ikke ordentligt. Der kommer scriptTimeout.
Avatar billede sp Nybegynder
22. marts 2002 - 16:35 #3
Jeg dropper det
Avatar billede coltau Juniormester
22. marts 2002 - 19:41 #4
Det er ærgeligt at du har lukket ? da jeg jo lige har lavet det du skal bruge - men her har du en som returnere positionerne i string adskildt af komma. Den checker for space og komma men kan udvides med flere tegn.

<%
Dim strPos, LastP

function Min(V1, V2) ' Returner den mindste hvis den er > 0
  Min = V1
  if (V2 > 0) and ((V2 < V1) or (V1 = 0)) then
    Min = V2
  end if
end function

function Add(Value, P) ' Gem position og æd tegn indtil P og returner resten
  LastP = LastP + P
  if (strPos <> "") then
    strPos = strPos & "," & LastP
  else
    strPos = P
  end if
  Add = Mid(Value, P + 1)
end function

sub FindPos(Value) ' Find positionerne for forskellige tegn i tekst og returner positionslisten i strPos
  LastP = 0
  strPos = ""
  do while Value <> ""
    P = Min(inStr(Value, " "), 0)
'    Response.Write(P & "=") ' Debug
    P = Min(inStr(Value, ","), P)
'    Response.Write(Value & "=" & P & "<br>") ' Debug
    ' Udvides her med flere
    'P = Min(inStr(Value, "a"), 0)
    'P = Min(inStr(Value, "b"), 0)
    if (P > 0) then
      Value = Add(Value, P)
    else
      Value = Add(Value, Len(Value))
    end if
  loop
end sub

Call FindPos("Test denne, tek,st for kommafejl.")
Response.Write(strPos)
%>
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