24. januar 2004 - 16:08Der er
15 kommentarer og 1 løsning
tekst string længere end designet
Hej E
Jeg har læst mig frem til at man kan tælle antallet at tegn i et output, fint nok og den kode jeg bruger er: <%If len(besked) > 100 Then%><%=(left(besked, 100) & "<br>")%><%Else%><%=besked%><%end if%>
Problemet for mig er at koden kun skal indsætte et <br> hvis et ord i træk er på ca 100 tegn. Ovenstående kode indsætter et <br> efter 100 tegn om der så er mellemrum mellem ordenen...
umildbart vil jeg sige du skal finde alle ord (delt af mellemrum) og så tjekke på hvert enkelt ord. Mit gæt er dog ved store tekster, er det en krævene process, så det er måske en god ide at gøre det når du smider det ind i databasen, og ikke når du trækker det ud. Har desværre ikke kompetence indenfor ASP til at lave reel kode eksempel.
Måske det kan hjælpe dig. Det er en funktion som kan klippe i ord og man angiver max længden for et ord med max_antal_karakter:
<% function delord(str, max_antal_karakter) MAX_LEN = max_antal_karakter ' max længde per ord.. det retter du bare.. NYT_TEGN = " " 'Indsættes i langt ord. Evt kan <br> for linjeskift brugers ordArr = Split(str, " ") for i = lbound(ordArr) to ubound(ordArr) tmp = ordArr(i) if len(ordArr(i)) >= MAX_LEN then for a = 0 to len(ordArr(i)) / MAX_LEN if len(tmp) >= MAX_LEN then strNy = strNy & NYT_TEGN & left(tmp, MAX_LEN) & vbCrLf tmp = mid(tmp, MAX_LEN + 1) end if next end if strNy = strNy & " " & tmp next delord = strNy end function %>
bla bla forbindelse <% Do While Not rs.Eof titel = rs("titel") besked = rs("post") besked = Replace(besked, vbCr,"<br>") %> bla bla design <%=titel%> bla bla design <%=besked%> bla bla design <% rs.Movenext Loop osv...
Skal jeg så: bla bla forbindelse <% Do While Not rs.Eof titel = rs("titel") besked = rs("post") besked = Replace(besked, vbCr,"<br>") function delord(besked, 30) MAX_LEN = 30 NYT_TEGN = "<br>" ordArr = Split(besked, " ") for i = lbound(ordArr) to ubound(ordArr) tmp = ordArr(i) if len(ordArr(i)) >= MAX_LEN then for a = 0 to len(ordArr(i)) / MAX_LEN if len(tmp) >= MAX_LEN then beskedNy = beskedNy & NYT_TEGN & left(tmp, MAX_LEN) & vbCrLf tmp = mid(tmp, MAX_LEN + 1) end if next end if beskedNy = beskedNy & " " & tmp next delord = beskedNy end function %> bla bla design <%=titel%> bla bla design <%=delord%> bla bla design <% rs.Movenext Loop osv...
Normalt ligge man function uden for selv koden evt. i bunden af ASP filen, og så skal man kalde functionen man kan ikke skriver det direkte på den måde :)
Prøv at ligge den oprindelige function efter </html> taget eller hvad der er helt i bunden.:
</html> <% 'function her: function delord(str, max_antal_karakter) MAX_LEN = max_antal_karakter ' max længde per ord.. det retter du bare.. NYT_TEGN = " " 'Indsættes i langt ord. Evt kan <br> for linjeskift brugers ordArr = Split(str, " ") for i = lbound(ordArr) to ubound(ordArr) tmp = ordArr(i) if len(ordArr(i)) >= MAX_LEN then for a = 0 to len(ordArr(i)) / MAX_LEN if len(tmp) >= MAX_LEN then strNy = strNy & NYT_TEGN & left(tmp, MAX_LEN) & vbCrLf tmp = mid(tmp, MAX_LEN + 1) end if next end if strNy = strNy & " " & tmp next delord = strNy end function %>
Så brug dit oprindelige kode:
bla bla forbindelse <% Do While Not rs.Eof titel = rs("titel") besked = rs("post") besked = Replace(besked, vbCr,"<br>") %> bla bla design <%=titel%> bla bla design <%=besked%> bla bla design <% rs.Movenext Loop osv...
og der hvor du replacer vbCrLf til <br> sætte du en ny linje ind: besked = rs("post") besked = Replace(besked, vbCr,"<br>") %>
Så det bliver sådan her sådan den kalder function som klipper lange ord: besked = rs("post") besked = delord(besked,30) besked = Replace(besked, vbCr,"<br>") %>
hahaha .. det virker til dels. Resultatet bliver at nu opdeles ordene der er længere end 75, ok, men lol, som recorden køre gennem loop'et bliver der hægtet forgående nyhed på den næste, osv...
Hvis jeg ' foran besked = delord... så virker der normalt <% Do While Not rs.Eof titel = rs("titel") besked = rs("post") ' besked = delord(besked, 75) besked = Replace(besked, vbCr,"<br>") %>
hmm Prøv lige at til føje et par linjer i funktionen:
function delord(str, max_antal_karakter) MAX_LEN = max_antal_karakter ' max længde per ord.. det retter du bare..
Så de bliver: function delord(str, max_antal_karakter) dim MAX_LEN, NYT_TEGN, strNy strNy = "" MAX_LEN = max_antal_karakter ' max længde per ord.. det retter du bare..
hehe... Yeps mester nu er den der. :) Godt arbejde der, tilmed humoristisk til tider :)
Til dem der er intersseret i koden: <% function delord(str, max_antal_karakter) strNy = "" MAX_LEN = max_antal_karakter ' max længde per ord.. det retter du bare.. NYT_TEGN = "<br>" 'Indsættes i langt ord. Evt kan <br> for linjeskift brugers ordArr = Split(str, " ") for i = lbound(ordArr) to ubound(ordArr) tmp = ordArr(i) if len(ordArr(i)) >= MAX_LEN then for a = 0 to len(ordArr(i)) / MAX_LEN if len(tmp) >= MAX_LEN then strNy = strNy & NYT_TEGN & left(tmp, MAX_LEN) & vbCrLf tmp = mid(tmp, MAX_LEN + 1) end if next end if strNy = strNy & " " & tmp next delord = strNy end function %>
Ved udskrift: bla bla besked = rs("post") besked = delord(besked, 75) besked = Replace(besked, vbCr,"<br>") bla bla
Eagleeye du ligger et svar hvis du lyster. Tak for hjælpen.
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.