[ASP] WordWrapping

Realmaster

Member
ID: 30366
L
2 November 2006
5
0
Hallo Ihr,

ich hab eine WordWrapping Funktion in ASP geschrieben, welche zwar funktioniert, aber wenn ich einen längeren Text/string habe, dann hängt es sich auf... bzw. tut nix mehr...

es ist so gedacht, der User schreibt in einem Textarea etwas... nach einer bestimmten anzahl von zeichen (120) soll ein \n an diese Stelle eingefügt werden. Damit es nicht mitten im Wort passiert, schaut er wo das letzte BLANK ist und fügt hier das \n ein... wenn jetzt eine Wortschlange eingegeben wird, dann soll einfach nach 120 Zeichen ein \n eingefügt werden...

bei sagen wir (hausnummer) ca 250 Zeichen funktioniert es noch, aber bei 300++ nicht mehr...

ich hänge mal den Code an, vl sieht ja wer, was ich besser und effizienter machen könnte! oder gibt es schon jem. der so etwas ausprogrammiert hat?

herzlichen dank!!

Gruß
Stefan

PS.: was vl noch interessant ist, programmiert für ASP (nicht .net)

Code:
Function WordWrap(strTextToBeWrapped, intMaxLineLength)
   
    dim s
	s = strTextToBeWrapped 
	dim lenStr
	lenStr = len(s)
	'dim MAXLEN as Integer 
	MAXLEN = intMaxLineLength
			
	'dim posBR as Integer
	posBR = 0
	'dim posLastBlank as Integer 
	posLastBlank= 0
	dim isReady
	isReady = true

	newStrS = ""

	tmpStr1 = s
	helpStr1 = ""
	helpStr2 = ""

	part1_1 = ""
	part2_1 = ""
	posLastBlank_1 = ""
	part1_2 = ""
	part1_2_1 = ""
				  
	if ( lenStr > MAXLEN ) then
		  while ( isReady ) 

			posBR = inStr(tmpStr1,"\n")
				
			if ( posBR = 0 )  then
				 helpStr1 = tmpStr1
				 helpStr2 = ""
				 if  tmpStr1 = "" then isReady = false end if
			else 
			    helpStr1 = mid(tmpStr1,1,posBR+1)
				helpStr2 = mid(tmpStr1,posBR+1)',lenStr) 
				tmpStr1 = helpStr2
		    end if 'END if ( posBR == -1 )
			
			if ( len(helpStr1) > MAXLEN ) then
		    
			      posLastBlank = instrRev(helpStr1," ")
				  
				  if ( posLastBlank > MAXLEN ) then
				  part1_1 = mid(helpStr1,1,MAXLEN)
				  part2_1 = mid(helpStr1,MAXLEN)
			  
				  posLastBlank_1 = instrRev(part1_1," ")
				  
				  ' part1_2: zeichen von anfang an bis zum blank
				  part1_2 = mid(part1_1,1,posLastBlank_1) 
				  'part1_2_1: zeichen von blank bis zum ende
				  part1_2_1 = mid(part1_1,posLastBlank_1) 
				  'füge den rest vom ersten zeil (nach blank) zu dem Teil der nach MAXLEN zeichen kommt
				  part2_1 = part1_2_1 & part2_1  
				  helpStr2 = part2_1 & helpStr2
				  newStrS = newStrS & part1_2 & "\n"
			 
			  else 'WENN kein Leerzeichen im String vorhanden ist
				  	if ( posLastBlank = 0 ) then
						part_mom = mid(helpStr1,1,MAXLEN)
						newStrS = newStrS & part_mom & "\n"
						tmpStr1 = mid(helpStr1,MAXLEN)',helpStr1.length)
						helpStr2 = tmpStr1 & helpStr2
					else
						newStrS = newStrS & helpStr1
					end if 'END if ( posLastBlank == -1 ) 
			  end if 'END if ( posLastBlank > MAXLEN )
			
		    else 
			      newStrS = newStrS & helpStr1
				  tmpStr1 = helpStr2
		    end if 'END if ( helpStr1.length > MAXLEN )
			    
		    tmpStr1 = helpStr2
		  wend 'END while ( isReady == true)
		else
			 newStrS = s
		end if 'END if ( lenStr > MAXLEN )
		WordWrap = newStrS
End Function