Splitar det vid radbrytningen, loopar igenom arrayn och ta length per rad, joinar ihop den med en radbrytning igen.
Frågan#1
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

