Avatar billede renewester Nybegynder
08. december 2000 - 11:18 Der er 9 kommentarer og
1 løsning

Opdeling af streng

jf. www.eksperten.dk/spm/35391

Jeg har en lidt modificeret udgave af scriptet, men det fungerer ikke efter hensigten.

Jeg har f.eks. en streng på 1268 karakterer (strBeskrivelse, som jeg forsøger at køre gennem møllen.

Da den her forsøger at lægge hvert bogstav ned i arrayet enkeltvist, er 150 jo for lille en størrelse. Det er meningen, at den skal splitte strengen på de 1268 ned i bidder af 200, og udskrive dem på skærmen (dvs. 7 linier).

Hvad er det mon jeg overser?

----------------------
Dim Resultat()
ReDim Resultat(150)
Length = len(strBeskrivelse)
Counter = 1
oldcount = 1
Runs = 0

For I = 1 to length
    OldCount = length

    For A = 1 to 200
        If Not Counter > length then counter = counter + 1
next

Resultat(Runs) = Mid (strBeskrivelse,OldCount,Counter)
Runs = Runs + 1
Next           

For H = 0 to Runs
    Response.Write(Resultat(H)) & \"<br>\"
Next
-----------------------
Avatar billede tdaugaard Nybegynder
08. december 2000 - 11:28 #1
ReDim Resultat(150) -- >ReDim Resultat(200)

?
Avatar billede tdaugaard Nybegynder
08. december 2000 - 11:30 #2
Hvad gør den .. splitter den bare strengen i 200 stykker eller i strenge af 200 tegn/stk. ?
Avatar billede renewester Nybegynder
08. december 2000 - 11:31 #3
Ja, så får jeg svaret:

Indekset er uden for området: \'Runs\'

Hvis jeg f.eks. ændrer arrayet til 1500, så kører det videre. Når den så begynder at udskrive, skriver den kun alle mellemrummene ud (Se til sidst:<br>)

Avatar billede renewester Nybegynder
08. december 2000 - 11:32 #4
Den splitter strengen i 1268 stykker.
Den skal bare lave (i dette tilfælde) 7 strenge, hvor hver streng fylder max 200 karakterer.

Avatar billede tdaugaard Nybegynder
08. december 2000 - 11:36 #5
glem mit forslag .. jeg \"læste\" ikke lige koden rigtigt ... så det har ingen betydning ..
Avatar billede renewester Nybegynder
08. december 2000 - 11:49 #6
Der er 100 point lige i ansigtet til den der kan løse \"gåden\" ;)
Avatar billede tdaugaard Nybegynder
08. december 2000 - 11:54 #7
Nu skal du se her.. den rutine du har der er CRAP .. brug denne her istedet .. MEGET hurtigere og så ReDim\'er den selv efter hver linie så du ikke behøver at Dim\'me flere elementer en nødvendigt.

<%
    BreakAt = 200 \' Split i strenge af # tegn
   
    ReDim Resultat(0)

    For intIndex = 1 To Len(strBeskrivelse) Step BreakAt
        Resultat(Int(intIndex / BreakAt)) = Mid(strBeskrivelse, intIndex, BreakAt)
        If (intIndex + BreakAt) <= Len(strBeskrivelse) Then Redim Preserve Resultat(UBound(Resultat) + 1)
    Next

    For intIndex = 0 To UBound(Resultat)
        Response.Write intIndex & \". \" & Resultat(intIndex) & \"<br>\"
    Next
%>
Avatar billede tdaugaard Nybegynder
08. december 2000 - 11:55 #8
Hvis det var det du ville (splitte en streng i strenge af # tegn) så er min rutine meget bedre.. dvs. den virker og er hurtigere end den anden..
Avatar billede erikjacobsen Ekspert
08. december 2000 - 11:59 #9
Øv, du var hurtigst tdaugaard..... Så får jeg vel ingen point, men jeg gør
stort set det samme som dig:

<%

  lang = \"dette er en meget lang streng\"

  dim a()
  redim a(0)


  while len(lang)>0
    redim preserve a(ubound(a)+1)
    a(ubound(a)) = left(lang,10)
    lang=mid(lang,11,len(lang))
  wend

  for i=lbound(a) to ubound(a)
    response.write a(i) & \"<br>\"
  next

%>
Avatar billede renewester Nybegynder
08. december 2000 - 12:22 #10
Mange tak begge 2. Her har du 100 point mere til samlingen, Tdaugaard.

Erik: Jeg beklager, men tdaugaard var hurtigst ;)
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