| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Fjernelse af blank linjer Fra : MacMan | 
  Dato :  19-08-01 23:01 |  
  |   
            Hej,
 
 Jeg har en række textareas hvor folk har tendens til at efterlade en masse
 tomme linjer både før og efter det de skriver.
 For at fjerne mellemrum bruges Trim(), men findes der også en smart måde at
 fjerne tomme linjer på, og hvis ikke, hvordan gribes det så smartest an?
 
 Altså:
 
 ---
 
 
 
 
 Hej mor!
 
 
 Hvordan går det?
 
 
 ---
 
 Vil jeg gerne have trimmet til:
 
 ---
 Hej mor!
 
 
 Hvordan går det?
 ---
 
  - Morten
 
  
            
             |   |   
            
        
 
            
         
           Jonas Astrup - html.~ (19-08-2001) 
         
	
            | Kommentar Fra : Jonas Astrup - html.~ | 
  Dato :  19-08-01 23:47 |  
  |  
 
            MacMan wrote in dk.edb.internet.webdesign.serverside.asp:
 > hvordan gribes det så smartest an? 
 Der findes sikkert en smartere måde - men dette virker, og var det eneste min
 hjerne kan præstere på nuværende tidspunkt:
 arrTekst = Split(Request.Form("Tekst"),VbCrlf)
 For i = 0 to Ubound(arrTekst)
   If Len(Trim(arrTekst(i))) > 0 Then 
     strTekst = strTekst & arrTekst(i) & VbCrlf
   End If
 Next
 Response.Write strTekst
 Mvh
 Jonas
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
           Niels Henriksen (20-08-2001) 
         
	
            | Kommentar Fra : Niels Henriksen | 
  Dato :  20-08-01 01:48 |  
  |  
 
            "MacMan" <nospam@nospam.com> wrote in message
 news:B7A603C7.85EE%nospam@nospam.com...
 > Hej,
 >
 > Jeg har en række textareas hvor folk har tendens til at efterlade en masse
 > tomme linjer både før og efter det de skriver.
 > For at fjerne mellemrum bruges Trim(), men findes der også en smart måde
 at
 > fjerne tomme linjer på, og hvis ikke, hvordan gribes det så smartest an?
 >
 Nu har jeg ikke lige testet det, men hvad med:
 tekst = replace(tekst,vbCRLF & vbCRLF,"")
 Altså erstatte alle steder hvor der er dobbelt vbCRLF med en tom streng..
 --
 Niels Henriksen
 -------------------------------
 Prøv chatten på  www.biggs.dk
            
             |   |   
            
        
 
            
         
           Jonas Astrup - html.~ (20-08-2001) 
         
	
            | Kommentar Fra : Jonas Astrup - html.~ | 
  Dato :  20-08-01 09:42 |  
  |  
 
            Niels Henriksen wrote in dk.edb.internet.webdesign.serverside.asp:
 > Altså erstatte alle steder hvor der er 
 > dobbelt vbCRLF med en tom streng.. 
 Problemet er så bare at 2,4,6,8, etc. VbCrlf'ere bliver erstattet med 0 - og så
 forsvinder linieskiftet helt.
 Mvh
 Jonas
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
            MacMan (20-08-2001) 
         
	
            | Kommentar Fra : MacMan | 
  Dato :  20-08-01 11:28 |  
  |   
            I brevet "9lqifs$i6a$1@sunsite.dk" skrev Jonas Astrup - html.dk
 (jonas.usenet@html.dk) den 20/08/01 10:41:
 
 > Niels Henriksen wrote in dk.edb.internet.webdesign.serverside.asp:
 >> Altså erstatte alle steder hvor der er
 >> dobbelt vbCRLF med en tom streng..
 > 
 > Problemet er så bare at 2,4,6,8, etc. VbCrlf'ere bliver erstattet med 0 - og
 > så
 > forsvinder linieskiftet helt.
 
 Der er desværre ikke rigtig nogen af løsningerne der duer, for de fjerner
 begge dobbelt (eller flere) mellemrum og det ønsker jeg ikke. I teksten man
 tilføjer giver det fuldt ud mening af lave lidt god luft hist og pist, bare
 ikke før og efter.
 Så altså:
 
 --
                     <- 2 linjers luft FØR tekst, IKKE ok.
                     <-
 Hej mor
                     <- 2 linjers luft OK
                     <-
 Hej sønnike
                     <- 2 linjers luft EFTER tekst, IKKE ok.
                     <-
 --
 
 Resultat:
 
 --
 Hej mor
                     <- 2 linjers luft OK
                     <-
 Hej sønnike
 --
 
 - Morten
 
  
            
             |   |   
            
        
 
            
         
             MacMan (20-08-2001) 
         
	
            | Kommentar Fra : MacMan | 
  Dato :  20-08-01 12:09 |  
  |   
            Hejsa,
 
 Okay, her er en løsning der virker, men den er riimelig voldsom synes jeg
 nok:
 
 <%
 Function TrimVbCrLf(ByVal strTekst)
 
     Dim arrTekst, arrTekstRev, i, intBefore, intAfter
 
     arrTekst       = Split(strTekst, vbCrlf)
     arrTekstRev    = Split(Replace(StrReverse(strTekst), Chr(10) & Chr(13),
 Chr(13) & Chr(10)), vbCrlf)
 
     For i = 0 to Ubound(arrTekst)
       If Len(Trim(arrTekst(i))) = 0 Then
             intBefore = intBefore + 1
         Else
             Exit For
       End If
     Next
 
     For i = 0 to Ubound(arrTekstRev)
       If Len(Trim(arrTekstRev(i))) = 0 Then
             intAfter = intAfter + 1
         Else
             Exit For
       End If
     Next
 
     strTekst = Right(strTekst, Len(strTekst) - (intBefore*2))
     strTekst = Left(strTekst, Len(strTekst) - (intAfter*2))
 
     TrimVbCrLf = Trim(strTekst)
 
 End Function
 %>
 
 <%
 Dim test
 test = vbCrLf & vbCrLf & vbCrLf & vbCrLf & "Hej mor!" & vbCrLf & vbCrLf &
 vbCrLf & "Hej sønnike!" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
 
 Response.Write "<PRE>---" & vbCrLf
 Response.Write TrimVbCrLf(test)
 Response.Write vbCrLf & "---</PRE>"
 %>
 
  
            
             |   |   
            
        
 
            
         
              MacMan (20-08-2001) 
         
	
            | Kommentar Fra : MacMan | 
  Dato :  20-08-01 12:17 |  
  |   
            Og her er så lige en kommenteret udgave:
 
 <%
 Function TrimVbCrLf(ByVal strTekst)
 
     '--- Det må ikke give fejl ved brug af Null.
 
     If IsNull(strTekst) Then
         TrimVbCrLf = ""
         Exit Function
     End If
 
     '--- Erklær vars.
 
     Dim arrTekst, arrTekstRev, i, intBefore, intAfter
 
     '--- Del tekst op i array, del ved linjeskift.
 
     arrTekst        = Split(strTekst, vbCrlf)
     arrTekstRev    = Split(Replace(StrReverse(strTekst), Chr(10) & Chr(13),
 Chr(13) & Chr(10)), vbCrlf)
 
     '--- Tæl hvor mange linjeskift der er FØR vi støder på noget tekst.
 
     For i = 0 to Ubound(arrTekst)
       If Len(Trim(arrTekst(i))) = 0 Then
             intBefore = intBefore + 1
         Else
             Exit For
       End If
     Next
 
     '--- Tæl hvor mange linjeskift der er EFTER den sidste tekst.
 
     For i = 0 to Ubound(arrTekstRev)
       If Len(Trim(arrTekstRev(i))) = 0 Then
             intAfter = intAfter + 1
         Else
             Exit For
       End If
     Next
 
     '--- Fjern linjeskift FØR første stump tekst, dernæst dem EFTER sidste
 stump tekst.
 
     strTekst = Right(strTekst, Len(strTekst) - (intBefore*2))
     strTekst = Left(strTekst, Len(strTekst) - (intAfter*2))
 
     '--- Fjern eventuelle mellemrum rundt om teksten og returner.
 
     TrimVbCrLf = Trim(strTekst)
 
 End Function
 %>
 
  
            
             |   |   
            
        
 
            
         
               Anders Holbøll (20-08-2001) 
         
	
            | Kommentar Fra : Anders Holbøll | 
  Dato :  20-08-01 14:29 |  
  |   
            MacMan wrote:
 > 
 > Og her er så lige en kommenteret udgave:
 
 Og her er så lige en lidt mindre resourcekrævende udgave:
 
 Function TrimWs(ByVal Value)
   Dim StartPos, EndPos, Length, Ch
   Length = Len(Value)
   StartPos = 1
   EndPos = Length
   If (Length > 0) Then
     Ch = Mid(Value, StartPos, 1)
     Do While (StartPos <= Length) And _
         ((Ch = " ") Or (Ch = vbTab) Or (Ch = vbCr) Or (Ch = vbLf))
       StartPos = StartPos + 1
       If (StartPos <= Length) Then Ch = Mid(Value, StartPos, 1)
     Loop
     Ch = Mid(Value, EndPos, 1)
     Do While (EndPos >= StartPos) And _
         ((Ch = " ") Or (Ch = vbTab) Or (Ch = vbCr) Or (Ch = vbLf))
       EndPos = EndPos - 1
       If (EndPos >= StartPos) Then Ch = Mid(Value, EndPos, 1)
     Loop
   End If
   If (StartPos > EndPos) Then
     TrimWs = ""
   ElseIf (StartPos > 1) Or (EndPos < Length) Then
     TrimWs = Mid(Value, StartPos, EndPos - StartPos + 1)
   Else
     TrimWs = Value
   End If
 End Function
 
 -- 
 Anders
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |