---
title: "Kombinera två funktioner"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/180749-kombinera-två-funktioner"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "devotion"
published: "2009-10-15T08:45:35.000Z"
updated: "2009-10-15T16:53:21.000Z"
replies: 2
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/180749-kombinera-två-funktioner"
---

# Kombinera två funktioner

## #1 — devotion, 2009-10-15T08:45Z

Hej,

Jag har två funktioner, enligt

```
function GetFixedLengthString(sLength, sText)
	dim sFirstChar, index
	dim a, n, k, r, str, re
	
	sFirstChar = 2
	
	n = array()
	k = 0
	r = 0
	index = 0
	
	set re = new regexp
	re.global = true
    re.ignorecase = true
	re.pattern = "(?:<br>)+"
	sText = re.replace(sText, " ")
	set re = nothing
	
	a = split(sText)
	
	while index <= ubound(a)
		if sFirstChar + r + len(a(index)) > sLength then
			str = vbcrlf 
			r = 0
			sFirstChar = 2
		end if
		
		r = r + 1
		sFirstChar = sFirstChar + len(a(index))
		redim preserve n(k)
		n(k) = str & a(index)
		k = k + 1
		index = index + 1
		str = ""
	wend
	
	GetFixedLengthString = join(n)
	
end function
```

den plockar in en sträng, och kortar ner raderna till nLength och lägger ett radbrytningstecken...

Fungerar finfint:

```
dim s

s="Hej, detta är en text som nog kommer vara mer än 60 tecken lång. Undrar hur det fungerar i praktiken?"

Response.write GetFixedLengthString(60, s)
```

Ger:

> Hej, detta är en text som nog kommer vara mer än 60 tecken 
> lång. Undrar hur det fungerar i praktiken?

Jag har även en annan funktion som bygger upp en textsträng med fasta positioner enligt:

```
sub SetSubString(ByRef sFull, sSubString, nPos, nLen)
        ' Make sure that sFull is at least nPos+nLen chars long
        if Len(sFull)<nPos+nLen then sFull=sFull & Space(nPos+nLen-Len(sFull))

        ' Make sure that sSubString is at least nLen chars long (pad right)
        if Len(sSubString)<nLen then sSubString=sSubString & Space(nLen-Len(sSubString))

        sFull=Left(sFull, nPos-1) & Left(sSubString, nLen) & Mid(sFull, nPos+nLen) 
end sub
```

Används så här:

```
<%

dim sOrderTextRows

sHeader=Space(83)
call SetSubString(sOrderTextRows, "KORT", 1, 5)
call SetSubString(sOrderTextRows, sOrderText, 6, 60)
call SetSubString(sOrderTextRows, "1", 70, 1)
call SetSubString(sOrderTextRows, "1", 71, 1)
call SetSubString(sOrderTextRows, "1", 72, 1)

Response.Write sOrderTextRows

%>
```

Nu vill jag kombinera dessa två.

Dvs radbryta den inkommande strängen och skapa ett format baserat på fasta positioner enligt:

```
KORT Hej, detta är en text som nog kommer vara mer än 60            111 
KORT tecken lång. Undrar hur det fungerar i praktiken?              111
```

Mvh
Henrik

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

## #2 — voigtann1, 2009-10-15T08:49Z

Splitar det vid radbrytningen, loopar igenom arrayn och ta length per rad, joinar ihop den med en radbrytning igen.

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

## #3 — devotion, 2009-10-15T16:53Z

Så här fick det bli:

```
function GetActionText(nLength, sText)
	dim sFirstChar, index
	dim a, n, k, r, str, re, i,s
	
	sFirstChar = 2
	
	n = array()
	k = 0
	r = 0
	index = 0
	
	set re = new regexp
	re.global = true
    re.ignorecase = true
	re.pattern = "(?:<br>)+"
	sText = re.replace(sText, " ")
	set re = nothing
	
	a = split(sText)
	
	while index <= ubound(a)
		if sFirstChar + r + len(a(index)) > nLength then
			str = vbcrlf 
			r = 0
			sFirstChar = 2
		end if
		
		r = r + 1
		sFirstChar = sFirstChar + len(a(index))
		redim preserve n(k)
		n(k) = str & a(index)
		k = k + 1
		index = index + 1
		str = ""
	wend
	
	GetActionText = join(n)
	
	a = split(GetActionText, VbCrLf)
    
    for i = lbound(a) to ubound(a)
        s = a(i)
        s = "KORT " & s
        while len(s) < 69
            s = s & " "
        wend
        s = s & "111"
        a(i) = s
    next

    GetActionText = join(a, VbCrLf)
	
end function
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/180749-kombinera-två-funktioner
