21. juli 2003 - 22:47Der er
13 kommentarer og 3 løsninger
Linjeskift og maks 30 tegn?
Jeg har denne linje som virker fint, når man skal have den til at skift linje fra en database. Men hvad nu, hvis den samtidig maks. må vise 30 tegn? <%=Replace(rsNyhed.Fields.Item("Brodtekst") &"", vbCrLf, "<br>") %>
Ja så skal du jo slå den i stykker i 2 dele. Hvis det er lige meget, hvor delingen skal være er det let, men hvis det skal ske i et mellemrum er det lidt mere besværligt. Du kunne vælge at udskrive i et tekstområde. Så bliver teksten jo ombrudt automatisk. Skriv lidt mere om din situation.
Function Ny_Streng(Streng) Arr_Streng = Split(Streng, " ") Ny_Streng = "" For i = 0 To UBound(Arr_Streng) If Len(Trim(Ny_Streng & " " & Arr_Streng(i))) <= 30 Then Ny_Streng = Ny_Streng & " " & Arr_Streng(i) Else Exit For End If Next End Function
Response.Write Ny_Streng("Denne sætning vil blive afkortet til max 30 tegn")
En meget lille detalje til det netro har lavet. I princippet kan du godt faa retuneret mere end 30 tegn. Hvis din Ny_Streng er paa 28 tegn og og den tager loekken en gang til saa kan den fint ligge et ord til som er paa 7 tegn. Herved kommer strengen op paa 35 tegn. Det er selvfoelgelig ogsaa kun hvis du vil gaa i ekstremerne, hvilket nok ikke er noedvendigt i dette sammenhaeng ;)
Hvis den nye streng er på 28 tegn, vil den springe ud af løkken i næste omgang i og med, at længden af den nye streng, et mellemrum og næste ord på 7 tegn er større end 30.
If Len(Trim(Ny_Streng & " " & Arr_Streng(i))) <= 30 Then
Jeg ser nu at netro har lavet næsten det samme som jeg, men her er min løsning: function Formater(txt) dim L,i,A const LL=30, br="<br>" 'Her er linielængden sat til 5
'Nu fjernes overflødige blanktegn L=0 while L<>len(txt) L=len(txt) txt=replace(txt," "," ") wend
'teksten deles op i ord A=split(txt," ")
'Der sættes lineskift og blanktegn på ordene de rigtige steder L=0 for i=0 to Ubound(A) L=L+len(A(i)) if i>0 then L=L+1 if L>LL then L=len(A(i)) A(i)=br & A(i) elseif i>0 then A(i)=" " & A(i) end if next
'Teksten samles igen Formater=join(A,"") end function
Linielængden ovenfor er naturligvis sat til 30. Hvis der er ord med en længde >30 vil de stå på deres egen linie. Hvis du er ligeglad med de oprindelige linieskift, så udskift dem med blanktegn, inden funktionen formater kaldes.
En generel bemærkning: VBscript er meget langsom til at lægge tekststrenge sammen. Man bør derfor bruge join-funktionen når man skal danne den nye tekst.
Generelt kan jeg godt bruge alle 3 løsninger. Så jeg takker for hjælpen alle 3.
:-)
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.