/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408868
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste