/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Skriv X antal tegn af en tekst uden at slu~
Fra : Magnus


Dato : 22-07-06 22:23

Er der ikke en som lige ligger inde med en funktion som kan skrive fx. 120
tegn af en nyhedstekt og afslutte med "..." derefter uden at den afslutter
midt i et ord?


/Magnus



 
 
Jørn Andersen (23-07-2006)
Kommentar
Fra : Jørn Andersen


Dato : 23-07-06 08:40

On Sat, 22 Jul 2006 23:22:53 +0200, "Magnus" <arnason_fjern@email.dk>
wrote:

>Er der ikke en som lige ligger inde med en funktion som kan skrive fx. 120
>tegn af en nyhedstekt og afslutte med "..." derefter uden at den afslutter
>midt i et ord?

Måske kan du får inspiration fra et tidligere svar, hvor spørgeren
ville dele efter 50 tegn, men ikke inde i et ord. Der skulle så
indsættes et "> " foran hver ny linie.
Dine krav er så lidt mindre, men her kommer smøren:

-------------------------------
On Fri, 7 Dec 2001 19:45:48 +0100, "Jakob Munck"
<jakob.munck@tdcadsl.dk> wrote:

Hej Jakob,

><%=Chop("Lang_streng_der_skal_deles", 50)%>
>
>Men den har det problem, at den deler den tekst der skal citeres mit inde i
>ordene. Den kode der skal bruges, skal dele tekststrengen i sidste mellemrum
>før karakter nr. 50. Så ovenstående kode skal ændres, men hvordan?

Prøv noget i retning af nedenstående.
Funktionen "DelLinie" bruger funktionen "FindSpace" til at finde
mellemrum med.

<%
Function FindSpace(streng, value)
Dim intSpace, intSPaceEval
intSpace = 0
intSpaceEval = 1
Do While (intSpaceEval > 0 And intSpaceEval < value + 1)
intSpaceEval = InStr(intSpace + 1, streng, " ", 0)
If (intSpaceEval > 0) And (intSpaceEval < value + 1) Then
intSpace = intSpaceEval
End If
Loop
FindSpace = intSpace
End Function


Function DelLinie(input, value)
Length = Len(input)
Rest = input
RestL = Length
Output = ""
If Length > value Then
Do While RestL > value
sp = FindSpace(Rest, value)
Output = Output & "> " & Left(Rest, sp - 1) & "<br>" & vbcrlf
Rest = Mid(Rest, sp + 1)
RestL = Len(Rest)
Loop
DelLinie = Output & "> " & Rest
Else
DelLinie = input
End If
End Function

Response.Write DelLinie(streng, 50)
%>

Det ser ikke specielt kønt ud, så det kan sikkert sagtens optimeres en
del ...

-------------------------------

Som jeg skrev kan det sikkert sagtens optimeres. Det er delt op i to
funktioner, hvor den ene kalder den anden.


Good luck!

--
Jørn Andersen,
Brønshøj

Terje (23-07-2006)
Kommentar
Fra : Terje


Dato : 23-07-06 09:36

> Det ser ikke specielt kønt ud, så det kan sikkert sagtens optimeres en
> del ...

Enig med deg, Jørn Her er en funksjon som jeg selv benytter til
dette formålet:

Function LimitTextLength(sText, iMax, sTail)
On Error Resume Next

If Len(sText) <= iMax Then LimitTextLength = sText: Exit Function
LimitTextLength = Mid(sText, 1, InStrRev(sText, " ", (iMax -
Len(sTail)) + 1)) & sTail

End Function

Den brukes f. eks. slik:
Response.Write LimitTextLength(MinText, 50, " ..")

terje

Søg
Reklame
Statistik
Spørgsmål : 177461
Tips : 31964
Nyheder : 719565
Indlæg : 6408203
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste