---
title: "Dela textsträng vid mellanslag"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/74234-dela-textsträng-vid-mellanslag"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Koggen"
published: "2003-04-16T11:20:34.000Z"
updated: "2003-04-16T12:21:29.000Z"
replies: 13
views: 435
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/74234-dela-textsträng-vid-mellanslag"
---

# Dela textsträng vid mellanslag

## #1 — Koggen, 2003-04-16T11:20Z

Jag använder följande kod för att dela en textsträng om den överstiger 900 tecken:

```
if len(textstrang) > 900 then
str1 = left(textstrang, 900)
str2 = mid(textstrang, 901)
else
str1 = textstrang
str2 = "&nbsp;"
end if
```

 
Problemet är bara att nu kan strängen klippas av mitt i ett ord, och det vill jag helst inte. Vet någon om man kan fixa så att strängen delas vid föregående eller nästa mellanslag??

Tack

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

## #2 — #L#, 2003-04-16T11:22Z

<http://www.webforum.nu/showthread.php?s=&threadid=51075&highlight=mellanslag+dela+ord>

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

## #3 — Sebbe, 2003-04-16T11:28Z

Det där #L# skrev blir ju inte riktigt samma sak väl?

```
str = "blabla bla abl aso af"

For i = 1 To 900
  If i = 900 Then
    If Mid(str,i,1) = " " Then
      strNy = Left(str,i)
    Else
      ii = 901
      Do Until blnMellan
        If Mid(str,ii,1) = " " Then
          strNy = Left(str,ii)
          blnMellan = True
        End If
        ii = ii + 1
      Loop
    End If
  End If
Next
```

Otestad kod, funkar säkerligen inte, men man kan ju testa.

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

## #4 — Engine^, 2003-04-16T11:37Z

**red.** Tog mig friheten att ändra i annans kod ;)

```
str = "blabla bla abl aso af"

If Len$(str) > 899 Then
  i = 900
  If Mid$(str,i,1) = " " Then
    strNy = Left$(str,i)
  Else
    bMellan = false

    Do Until bMellan
      If Mid$(str, i, 1) = " " Then
        strNy = Left$(str, i)
        bMellan = True
      End If

      i = i - 1
    Loop
  End If
End If
```

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

## #5 — #L#, 2003-04-16T11:37Z

> Det där #L# skrev blir ju inte riktigt samma sak väl?

uhm? .. var väl precis det han var ute efter?

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

## #6 — Sebbe, 2003-04-16T11:39Z

> **Engine^ skrev:**
>
> Trevlig lösning, men bör du inte använda *ii = ii -1*? Annars blir det ju för långt...

Han skrev ju "eller vid **nästa** mellanslag". ;)

> **\#L# skrev:**
>
> uhm? .. var väl precis det han var ute efter?

Han ville väl inte ha 900 ord, han ville väl ha 900 bokstäver?

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

## #7 — Engine^, 2003-04-16T11:45Z

> **Sebbe skrev:**
>
> Han skrev ju "eller vid **nästa** mellanslag". ;)

 

> **Koggen skrev:**
>
> Problemet är bara att nu kan strängen klippas av mitt i ett ord, och det vill jag helst inte. Vet någon om man kan fixa så att strängen delas vid föregående eller nästa mellanslag??

 ;)

f.ö. så ändrade jag hela mitt inlägg, men du var för snabb att svara :)

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

## #8 — Sebbe, 2003-04-16T11:48Z

Engine^: Bara en undran över din kod. Varför skriver du ett $-tecken efter alla dina strängfunktioner? Som t.ex. Len$(str), Mid$(str,i,1), m.fl?

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

## #9 — Engine^, 2003-04-16T11:51Z

Jag kommer faktiskt inte ihåg, men jag har för mig att det var snabbare än utan $. Jag vet att jag har läst om det någonstans, men jag hittar inte vart just nu. (Postar en länk här om jag hittar åt det igen)

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

## #10 — Koggen, 2003-04-16T11:52Z

Jag hade faktiskt sett det där med att splitta till array vid mellanslag, men det funkar inte för mig eftersom det jag skall skriva ut är en vetenskaplig text som kan innehålla alla möljiga tecken, och hur många mellanslag som helst. 

Engines kod fungerade (sedan jag plockat bort $-tecknen), men en dum följdfråga.. 

Hur får jag nu ut resten av texten i en annan variabel där texten börjar från samma ställe som texten i den första variabeln slutar.. hoppas ni fattade det, det var knappt jag gjorde det själv ;) 

Tack för hjälpen allihop

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

## #11 — Engine^, 2003-04-16T11:57Z

> **Koggen skrev:**
>
> Engines kod fungerade (sedan jag plockat bort $-tecknen), men en dum följdfråga..

Ok. $ är visst Visual Basic och innebär att en sträng returneras istället för en Variant. Alltså är det snabbare med Mid$, men det finns inte i VBScript. My mistake.

```
[blue]'Resten av texten[/blue]
strResten = Mid(str, i)
```

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

## #12 — Koggen, 2003-04-16T12:00Z

Tack än en gång, jag lär mig lite mer för var gång jag frågar här  :)

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

## #13 — Erik Juhlin, 2003-04-16T12:00Z

En enkel funktion utan en massa loopar och grejer.

```
Function CutString(sStr, lMaxLength)
	If InStr(lMaxLength, sStr, " ") Then
		CutString = Left(sStr, InStr(lMaxLength, sStr, " "))
	Else
		CutString = Left(sStr, lMaxLength)
	End If
End Function
```

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

## #14 — Engine^, 2003-04-16T12:21Z

*InStr* är ju en loop... ;)

Praktisk funktion om man vill ha med det sista ordet i strängen. Tyvärr fungerar den inte om det sista ordet har en bokstav någonstans på plats 900, eftersom då returnerar InStr 0, men sånt får man väl iofs ha överseende med.

```
Function CutString(sStr, iMaxLength)
  iFirst = InStrRev(sStr, " ", iMaxLength)
  iLast = InStr(iMaxLength, sStr, " ")

  If iLast <= iMaxLength And iLast > 0 Then
    CutString = Left(sStr, iLast)
  ElseIf iFirst < iMaxLength And iFirst > 0 Then
    CutString = Left(sStr, iFirst)
  Else
    CutString = Left(sStr, iMaxLength)
  End If
End Function
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/74234-dela-textsträng-vid-mellanslag
