---
title: "Problem med \"bryta-lång-sträng\"-funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/77054-problem-med-bryta-lång-sträng-funktion"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Peeer"
published: "2003-05-15T13:52:03.000Z"
updated: "2006-04-17T11:28:31.000Z"
replies: 8
views: 769
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/77054-problem-med-bryta-lång-sträng-funktion"
---

# Problem med "bryta-lång-sträng"-funktion

## #1 — Peeer, 2003-05-15T13:52Z

```
Function Shorter(strText, antal)
Dim arrText, counter, newText
	arrText = Split(strText, " ")
	
	For counter = 0 To uBound(arrText)
		If Len(arrText(counter)) > antal then
			If newText <> "" then
				newText = newText & " " & Left(arrText(counter), antal) & " " & Right(arrText(counter), Len(arrText(counter))-antal)
			Else
				newText = Left(arrText(counter), antal) & " " & Right(arrText(counter), Len(arrText(counter))-antal)
			End If
		Else
			If newText <> "" then
				newText = newText & " " & arrText(counter)
			Else
				newText = arrText(counter)
			End If
		End If
	Next
	
	Shorter = newText
End Function

Response.write Shorter(strText,50)
```

Denna funktion har jag (troligen) hittat här på wF, men har nu upptäckt ett fel med den. Om strText är längre än 100 tecken så ska strängen ju delas upp i (minst) 3 delar. Det gör den inte. Den delas upp i 2 delar varav den första delen är 50 tecken lång, och den andra delen är resterande.

Hur gör jag så att funktionen fungerar även för strängar som ska delas mer än en gång? :)

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

## #2 — Inferis, 2004-04-18T12:05Z

Detta undrar jag med.

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

## #3 — Peeer, 2004-04-18T12:20Z

```
function ShortWord($text,$length) 
{
	$text = preg_replace ("/([^\s]{".$length.",})/e", "''.wordwrap('\\1', ".$length.", ' ', 1).''", $text);
	return $text;
}
```

/r Ähum, va inget :birp

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

## #4 — @nders, 2004-04-18T12:21Z

Peeer, du är medveten om att det här är ASP-forumet? ;)

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

## #5 — Peeer, 2004-04-18T12:22Z

> **@nders skrev:**
>
> Peeer, du är medveten om att det här är ASP-forumet? ;)

Haha, dagens miss :D
Jag höll visst på med ASP för ett år sedan. :r :OO

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

## #6 — LR^evil.sid, 2004-04-18T13:42Z

Sitter på jobbet nu så jag vet inte om det fungerar men nått sånt här kanske?

```
Function SlitIt(TxtStr, n)
    If Len(Trim(TxtStr)) <= n Then SlitIt = TxtStr: Exit Function
    Dim i, TmpStr, OffSet: TxtStr = Trim(TxtStr)

    For i = 0 To Len(TxtStr)
        If Len(TxtStr) => n Then
            If Mid(TxtStr, n, 1) = " " Then
                SlitIt = ConCat(TxtStr)
            Else
                If InStr(TxtStr, " ") = False Then
                    TxtStr = Left(TxtStr, n) & " "
                Else
                    TmpStr = Left(TxtStr, n)
                    OffSet = InStrRev(TmpStr, " ", n)
                    SlitIt = SlitIt & Left(TxtStr, Int(OffSet))
                End If
            End If
            TxtStr = Right(TxtStr, (Int(Len(TxtStr)) - n)): i = (Int(Len(TxtStr)) - n)
        Else
            SlitIt = ConCat(TxtStr)
        End If
    Next
End Function

Function ConCat(TxtStr)
    If TxtStr = "" Then Exit Function
    ConCat = ConCat & TxtStr
End Function
```

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

## #7 — Erik Juhlin, 2004-04-18T17:25Z

Eftersom att jag sett så många konstiga lösningar så gkjorde jag två smarta regexp-lösningar. La in dem i script-arkivet. Men eftersom att tråden inte visas där än så postar jag det även här.

Här kommer två sätt för hur man kan hindra långa ord som tvingar fram sidscrollen. Gör dessa för att jag sett så väldigt många konstiga lösningar.

```
<%
Option Explicit

Function ShorterString1(ByVal sString, ByVal lMaxLength)
	Dim objRegExp
	Set objRegExp = New RegExp
	objRegExp.Global = True
	objRegExp.Pattern = "(\S{" & lMaxLength & "})"
	ShorterString1 = objRegExp.Replace(sString, "$1 ")
	Set objRegExp = Nothing
End Function

Response.Write ShorterString1("sdfsdfdssfdfvdgdgfsfggfgfgfgffgfdfgfggfdggfgfgfdgdffdfggffggfgfgfgfdfs lalalal eoeooeoe", 5) & "<br>"

Function ShorterString2(ByVal sString, ByVal lMaxLength)
	Dim objRegExp
	Set objRegExp = New RegExp
	objRegExp.Global = True
	objRegExp.Pattern = "(\S{" & lMaxLength & ",})"
	ShorterString2 = objRegExp.Replace(sString, "<span style=""word-break: break-all;"">$1</span>")
	Set objRegExp = Nothing
End Function

Response.Write ShorterString2("sdfsdfdssfdfvdgdgfsfggfgfgfgffgfdfgfggfdggfgfgfdgdffdfggffggfgfgfgfdfs lalalal eoeooeoe", 5)
%>
```

Den första sätter in mellanslag efter X antal tecken utan mellanslag. kan bli dubbla mellanslag om ordet är lika långt som maxlängden, men det bör inte spela någon roll eftersom att det inte visas som två mellanslag på en webbsida.
Den andra sätter in en span-tagg runt det långa ordet med CSS-attributet word-break: break-all;. Detta gör att det kommer att radbrytas när det behövs, men inga mellanslag visas. Lätt snyggaste lösningen, men lite trixig om man vill kombinera den med Server.HTMLEncode...

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

## #8 — @nders, 2004-04-18T17:27Z

Snyggt, Erik!

Bokmärks. :)

Mvh

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

## #9 — medialabs, 2006-04-17T11:28Z

> **Erik Juhlin skrev:**
>
> Här kommer två sätt för hur man kan hindra långa ord som tvingar fram sidscrollen. Gör dessa för att jag sett så väldigt många konstiga lösningar.
>
>
> ```
> <%
> 
> Function ShorterString1(ByVal sString, ByVal lMaxLength)
> 	Dim objRegExp
> 	Set objRegExp = New RegExp
> 	objRegExp.Global = True
> 	objRegExp.Pattern = "(\S{" & lMaxLength & "})"
> 	ShorterString1 = objRegExp.Replace(sString, "$1 ")
> 	Set objRegExp = Nothing
> End Function
> 
> Response.Write ShorterString1("sdfsdfdssfdfvdgdgfsfggfgfgfgffgfdfgfggfdggfgfgfdgdffdfggffggfgfgfgfdfs lalalal eoeooeoe", 5) & "<br>"
> 
> %>
> ```

Tack Erik för en ypperlig funktion! Precis vad jag letade efter!

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/77054-problem-med-bryta-lång-sträng-funktion
