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 = " "
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??
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.
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
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 :)
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)
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 ;)
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)
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
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
255 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e