---
title: "Korta av textsträng"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/13545-korta-av-textsträng"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Kim"
published: "2001-09-11T08:09:00.000Z"
updated: "2002-01-04T17:53:00.000Z"
replies: 11
views: 334
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/13545-korta-av-textsträng"
---

# Korta av textsträng

## #1 — Kim, 2001-09-11T08:09Z

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? :)

Permalänk: https://www.webforum.nu/p/13545

## #2 — LarsG, 2001-09-11T08:15Z

```
textString = mid(textString,1,20) & "..."
```

Permalänk: https://www.webforum.nu/p/302611

## #3 — Kim, 2001-09-11T08:16Z

Tack Larsa! Snabb som alltid! :D

Permalänk: https://www.webforum.nu/p/302612

## #4 — GbgKalle, 2002-01-03T23:14Z

.. 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\]

Permalänk: https://www.webforum.nu/p/302613

## #5 — M@rtin, 2002-01-04T00:20Z

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>
```

Permalänk: https://www.webforum.nu/p/302614

## #6 — GbgKalle, 2002-01-04T16:08Z

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

Permalänk: https://www.webforum.nu/p/302615

## #7 — Rinaldo, 2002-01-04T16:45Z

Är det något fel på left eftersom ingen använder det...

" & left(rs("fält"),30) & " ...

Permalänk: https://www.webforum.nu/p/302616

## #8 — M@rtin, 2002-01-04T16:52Z

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.

Permalänk: https://www.webforum.nu/p/302617

## #9 — jorgen, 2002-01-04T17:02Z

> 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 :)

Permalänk: https://www.webforum.nu/p/302618

## #10 — M@rtin, 2002-01-04T17:15Z

Aha. Det var ju bra att veta. Tack! Då ska jag skriva om funktionen lite :)

Permalänk: https://www.webforum.nu/p/302619

## #11 — M@rtin, 2002-01-04T17:19Z

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>
```

Permalänk: https://www.webforum.nu/p/302620

## #12 — GbgKalle, 2002-01-04T17:53Z

.. 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

Permalänk: https://www.webforum.nu/p/302621

---

Tråden på webben: https://www.webforum.nu/amne/asp/13545-korta-av-textsträng
