31. oktober 2001 - 16:29Der er
19 kommentarer og 1 løsning
Max 80 tegn , dog ikke <br>
Jeg her her på eksperten fundet denne kode, som deler teksten fra feltet historie op i linier på max 80 tegn.
strFelt = RS(\"Historie\") iBreak = 80 myArray = Split(strFelt, \" \") for i=Lbound(myArray) to Ubound(myArray) if i = 0 Then strLine = myArray(i) end if
if i = Ubound(myArray) Then Response.Write strLine exit for end if
nyItem = \" \" + myArray(i+1) if len(strLine & nyItem) >= iBreak Then Response.Write strLine & \"<br>\" strLine = myArray(i+1) else strLine = strLine & nyItem end if Next
Nu er problemet at jeg skal have flettet en lille feature ind i den kode. Denne feature går ud på, at jeg i spm http://www.eksperten.dk/spm/127942 , fik en kode som kan oversætte \"Enter\" til <br>. Det virker også fint, men den ovenstående kode tæller også<br> med i de 80 tegn, så resultatet ser mystisk ud.
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
oki....jeg er helt sikkert superforvirret. Jeg forstår ikke helt probemstillingen, men jeg prøver å oppsummere litt.
Du har en tekst som du henter fra en datbase, og denne inneholder lange tekster med linjeskrift representert som \'<br>\'. Det du ønsker, er å skrive denne tekst ut, men du vil kun skrive ut ca 80 tegn på hver linje ?! Har jeg forstått deg rett ?
*hvis* dette er hva du ønsker, så kan du prøve å skifte ut denne linje (i den koden jeg postet)
splitIndex = InStrRev( str, vbCrLf, 80 )
med denne:
splitIndex = InStrRev( str, \"<br>\", 80 ) ´ JEg vet ikke om du har forstått hva min lille stump kode gjør, men det kan jeg så forklare :-)
Den starter på det 80. tegn og kikker \"nedover\" mot starten av strengen for å finne det siste linjeskift/det linjeskift som ligger tettest opp til 80. tegn. Deretter hentes alle tegn fra starten av strengen til linjeskiftet og legges inn i en array.
/nute
Synes godt om
Slettet bruger
31. oktober 2001 - 17:35#7
Hjaelp > Vil du have den til at lave et linje skift, uden at du bruger <br> eller vil du bare have den til at fortsætte på samme linje?
Du skal skrive *hvert* linjeskift (<br>) ut. Hvis det kommer et linjeskift etter 20 tegn, så skal et linjeskift skrives ut. Så langt er vi enige ?! Hvis det så kommer et linjeskift etter 90 tegn, skal det så settes inn et linjeskift ved ca 80 tegn (fx ved nærmeste space) og deretter enda et linjeskift etter ca 10 linjer ?
Sånn som jeg har forstått det, så har du en tabell eller lignende du skal skrive ut til, og du skal ikke overstige ca 80 tegn i bredden...??
inputStr = RS(\"Historie\") maxCharPrLine = 80 charPrLine = 0 i = 1 outStr = \"\" inputStr = replace (inputStr,\"<br>\",vbCrLf) do while i <= len(inputStr) tempChar = mid(inputStr,i,1) charPrLine = charPrLine + 1 outStr = outStr & tempChar \'læg tegn til if (tempChar = vbCr) OR (tempChar = vbLf) OR (tempChar = vbCrLf) OR (charPrLine >= maxCharPrLine) then if (charPrLine >= maxCharPrLine) then \'Kom ind pga max længde pr line if tempChar = \" \" then outStr = outStr & vbCrLf else insertIndex = inStrRev(outStr,\" \") if insertIndex > 0 then outStr = Mid(outStr,1,insertIndex) & vbCrLf & Mid(outStr,insertIndex+1) else outStr = outStr & \"-\" & vbCrLf end if end if end if charPrLine = 0 end if i = i + 1 loop outStr = replace (outStr, vbCrLf, \"<br>\") Response.Write outStr
jeg har vært nødt til å arbeide, så jeg kunne ikke poste noe, beklager. Når jeg så begynte å kode, så har jeg kjørt meg fullstendig fast med å skrive en rekursiv metode. Denne *vil* bare ikke fungere, og jeg kan bare ikke fatte hvorfor :-((
Heldigvis (for deg :-) ) hadde eagleeye en liten luring på lager...den fungerer jo fremragende ... Mye kan tyde på at min ide om en rekursiv løsning ikke var så smart :-(
anyway...jeg var tett på å gi opp, så jeg ble faktisk glad da eagleeye dukket opp og løste problemet....takk eagleeye :)
Den første løber hele strengen igennem karakter for karakter.
En anden metode er denne: Denne benytter instrRev til enten at finde mellemrun (\" \") eller return (vbCrLf) og så kopier fra starten til \" \" eller vbCrLf.
inputStr = RS(\"Historie\") ConstmaxCharPrLine = 80 charPrLine = 0 outStr = \"\" inputStr = replace (inputStr,\"<br>\", vbCrLf) do while len(inputStr) > 0 if len(inputStr)>maxCharPrLine then maxCharPrLine = ConstmaxCharPrLine else maxCharPrLine = len(inputStr) end if indexBR = inStrRev(inputStr, Chr(10),maxCharPrLine,0) if indexBR = 0 then if ConstmaxCharPrLine = maxCharPrLine then indexBR = inStrRev(inputStr,\" \",maxCharPrLine) outStr = outStr & mid(inputStr,1,indexBR) & vbCrLf else outStr = outStr & inputStr indexBR = maxCharPrLine end if else outStr = outStr & mid(inputStr,1,indexBR) end if inputStr = mid(inputStr,indexBR+1) loop outStr = replace (outStr, vbCrLf, \"<br>\") Response.Write outStr
eagleeye >> jeg hadde faktisk ikke testet det script, men jeg kan nå se at ideen fungerer jo faktisk :-) det ble bare skrevet inn i min browser, men ser at det var noen skumle feil ... :-| Men jeg fikk iallefall vist hva jeg hadde i tankene...
/nute
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.