textString = mid(textString,1,20) & "..."
------------------
essentitia preter non sans multiplicandum
11 svar · 324 visningar · startad av Kim
Vi säger att jag har en textsträng, En massa text som inte har något egentligt innehåll, i en variabel, textString.
Nu vill jag korta av denna sträng till t.ex. 20 tecken och därefter lägga till tre punkter.
Resultatet ska alltså bli En massa text som in...
Någon som kan hjälpa mig med detta? :)
------------------
-mucho-
textString = mid(textString,1,20) & "..."
------------------
essentitia preter non sans multiplicandum
.. hej där, exakt var lägger man in textString = mid(textString,1,20) & "..." och varför .. "är ny på detta" =)
Jag har gjort nedan, och behöver den funktionen med, då det är en massa text annars ..
<%
If Request.Form("sokord") <> "" Then
Response.Write "Din sökning på <b>" & Request.Form("sokord") & "</b> gav följande träffar.<br><br>" & vbCrLf
SQL = "Select * from Documents Where Content Like '%" & Request.Form("sokord") & "%' "
SET RS = Con.Execute(SQL)
While Not RS.EOF
Response.Write "<b>Sida - </b>" & RS("title") & "<br><br>" & RS("Content") & "<br>" & vbCrLf
RS.MoveNext
Wend
RS.Close
Set RS = Nothing
End If
%>
Mvh:
GbgKalle
[Redigerat av GbgKalle den 04 jan 2002]
Jag skrev en funktion för att lösa sånna här problem.
Man kan välja avslutningstecken så man behöver inte ha "..." och så lägger den inte till t.ex. "..." om strängen är t.ex. 23 tecken eftersom de då ändå blir lika långa :)
Den tar även bort avslutande mellanslag om det finns något sådan, tyvärr tar den bara bort ett så om man har flera mellanslag i slutet så fungerar det inte. Hittade inget smart sätt att göra det på :(
Här är funktionen samt lite exempelkod.
<%
Function StringCut(strText,strEndString,intCutLength)
if LEN(strText)>intCutLength+LEN(strEndString) then
if MID(strText,intCutLength,1)=" " then
strText=Left(strtext,intCutLength-1)
end if
strText=Left(strText,intCutLength) & strEndString
end if
StringCut=strText
End Function
strOver20="En sträng som innehåller mkt mer än 20 tecken"
str20="En 20 tecken sträng!"
strOver20Space="En sträng som har 1 mellanslag exakt på teacken 20!"
%>
<html>
<head>
<title>
20 tecken + "..."
</title>
</head>
<body>
<%
Response.Write StringCut(strOver20,"...",20) & "<br>"
Response.Write StringCut(str20,"...",20) & "<br>"
Response.Write StringCut(strOver20Space,"...",20) & "<br>"
%>
</body>
</html>
------------------
//M@rtin || Peachy.nu\\
ni taLar Bra laTiN
[Redigerat av M@rtin den 04 jan 2002]
Hej M@rtin, det verkar ju vettigt, problemet är att jag är alldeles ny på detta så om du kunde visa mig vägen till en lösning baserat på den kod jag postade tidigare så vore jag jätte tacksam, skriv gärna lite kommentarer brevid varje ändring så jag får in det i skallen vad det innebär med .. är lite trög ibland .. hehe .. =)
Mvh:
GbgKalle
Är det något fel på left eftersom ingen använder det...
" & left(rs("fält"),30) & " ...
------------------
MVH
Visst.
Förstår inte riktigt vad du vill göra. Om det är rubriken eller innehållet du vill korta ned. Nu skriver jag koden för att korta ned båda.
<%
[b]
Function StringCut(strText,strEndString,intCutLength) 'Här börjar funktionen
if LEN(strText)>intCutLength+LEN(strEndString) then 'Här kontrolleras det om längden på strängen öht är för lång
if MID(strText,intCutLength,1)=" " then 'Här kontrolleras det om sista teckenet är ett mellanslag
strText=Left(strtext,intCutLength-1) 'Om så är fallet så klipps strängen ett tecken tidigare
end if
strText=Left(strText,intCutLength) & strEndString 'Här läggs avslutningen på
end if
StringCut=strText 'Här returnerar funktionen resultatet
End Function
[/b]
'Sedan kommer din kod som jag antar att du vet vad den gör men jag kommenterar lite ändå
If Request.Form("sokord") <> "" Then 'Här kollas det om man sökt på något
Response.Write "Din sökning på <b>" & Request.Form("sokord") & "</b> gav följande träffar.<br><br>" & vbCrLf 'Lite text bara
SQL = "Select * from Documents Where Content Like '%" & Request.Form("sokord") & "%' " 'SQL strängen sätts till att söka i Documents efter strängar som inehåller sökorden i Content
SET RS = Con.Execute(SQL) 'SQL strängen körs
While Not RS.EOF 'Loopa reslutatet
Response.Write "<b>Sida - </b>" & [b]StringCut([/b]RS("title")[b],"...",20)[/b] & "<br><br>" & [b]StringCut([/b]RS("Content")[b],"...",40)[/b] & "<br>" & vbCrLf 'Här skrivs resultatet ut
RS.MoveNext
Wend
RS.Close
Set RS = Nothing
End If
%>
Det nya är markerat med fet text. Nu klipps rubriken (title) vid 20 tecken och innehållet (content) vid 40.
------------------
//M@rtin || Peachy.nu\\
ni taLar Bra laTiN
Den tar även bort avslutande mellanslag om det finns något sådan, tyvärr tar den bara bort ett så om man har flera mellanslag i slutet så fungerar det inte. Hittade inget smart sätt att göra det på
if MID(strText,intCutLength,1)=" " then 'Här kontrolleras det om sista teckenet är ett mellanslag
strText=Left(strtext,intCutLength-1) 'Om så är fallet så klipps strängen ett tecken tidigare
end if
Hej, ett förslag. För att ta bort onödiga blankslag kan du använda funktionen trim()
Ltrim() --> tar bort blankslag till vänster
Rtrim() --> tar bort till höger
trim() --> tar bort både före och efter.
mvh Jörgen :)
------------------
.: Det är jag som ger svaren och det är Ni som ställer frågorna :.
[Redigerat av jorgen den 04 jan 2002]
Det gjorde ju funktionen bra mycket snyggare oxå :)
<%
Function StringCut(strText,strEndString,intCutLength)
if LEN(strText)>intCutLength+LEN(strEndString) then
strText=RTrim(Left(strText,intCutLength)) & strEndString
end if
StringCut=strText
End Function
strOver20="En sträng som innehåller mkt mer än 20 tecken"
str20="En 20 tecken sträng!"
strOver20Space="En sträng som har 1 mellanslag exakt på teacken 20!"
%>
<html>
<head>
<title>
20 tecken + "..."
</title>
</head>
<body>
<%
Response.Write StringCut(strOver20,"...",20) & "<br>"
Response.Write StringCut(str20,"...",20) & "<br>"
Response.Write StringCut(strOver20Space,"...",20) & "<br>"
%>
</body>
</html>
------------------
//M@rtin || Peachy.nu\\
ni taLar Bra laTiN
.. tack så himla mkt M@rtin och alla andra .. nu blev det ju kanon .. å tack för förklaringarna i koden, såna får man aldrig för mkt av som "newbie" .. hehe ..
Mvh:
GbgKalle