Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Oönskade radbrytningar

Postades av 2002-08-20 12:09:52 - Lena Christensson, i forum asp - allmänt, Tråden har 12 Kommentarer och lästs av 974 personer

Jag hämtar en sträng med Request.Form från en textarea.
Hur kan jag få bort eventuella oönskade radbrytningar som användaren gjort i slutet på denna sträng?


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-20 13:25:47 - Jonas Gauffin

Function RemoveLastBr(textVar)
iLen = Len(textVar)
while mid(textVar, iLen - 1, 2) = vbCrlf
textVar = Left(textVar, iLen - 2)
iLen = iLen - 2
wend
RemoveLastBr = textVar
End Function

använd den såhär:
response.write "Utan sista enter" & RemoveLastBr(request.form("mintextarea"))


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-20 14:57:58 - Lena Christensson

Det fungerade jättebra, fast det visste du kanske redan... ;)

Har ett par frågor till dock och det är vad som händer när dessa funktioner körs, jag tappar bort mej i while satsen...:
mid(textVar, iLen - 1, 2) = vbCrlf
Left(textVar, iLen - 2)

Tack för hjälpen förresten, det sa jag nog aldrig..!


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-20 15:35:18 - Jonas Gauffin

Function RemoveLastBr(textVar)

'Spara den aktuella längden på textsträngen
iLen = Len(textVar)

'Om dom två sista tecknena är Cr och Lf, avslutar alltid rader i pc, loopa
while mid(textVar, iLen - 1, 2) = vbCrlf

'Ta bort de två sista tecknena, dvs Cr och Lf
textVar = Left(textVar, iLen - 2)

'Minska längden på strängen med två tecken eftersom Cr och Lf är borttagna
iLen = iLen - 2

'Upprepa
wend

'Tilldela funktionen den bearbetade textvariabeln
RemoveLastBr = textVar
End Function

Som jag sa ovan avslutas rader med CrLf på pc, i unix är det Lf (kan vara värt att veta om även unix/linux användare använder ditt formulär)

Cr = ascii 13 och Lf = ascii 10.
Cr står för CarrigeReturn och betyder Markör Återvänd, dvs tillbaka till kolumn 1 på raden.
Lf står för LineFeed = radmatning


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-20 22:35:38 - Ronny Thörnvall

Kan man inte använda VB:s inbyggda Replace()-funktion för att ersätta alla vbCrLf (eller vbCr och vbLf) med t ex ' ' eller '<br>' eller vad-man-nu-vill?!

Är den funktionen så FÖRFÄRLIGT långsam eller vad?! (Har hört det nå'nstans men vet inte säkert...)

... bara en fundering...

// Qez :-)


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-21 07:27:25 - Johan Djupmarker

>Kan man inte använda VB:s inbyggda Replace()-funktion för att ersätta alla vbCrLf

Visst kan man det, men här var frågan hur man tog bort alla avslutande radbrytningar och inte alla...

/Johan


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-21 10:07:32 - Andreas Hillqvist

Man kan ju generalisera funktionen. Samt att flytta ut Left. Behövs ju bara göras en gång:
<code>
Function RStringTrim(Value, Optional Chars = vbCrLf)
Dim lngPos
Dim lngCharsLen
lngCharsLen = Len(Chars)
lngPos = Len(textVar) - lngCharsLen + 1
Do While Mid(Value, lngPos, 2) = vbCrlf
lngPos = lngPos - lngCharsLen
Loop
RStringTrim = Left(Value, lngPos)
End Function
</code>


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-21 11:40:08 - Jonas Gauffin

så sant så =)


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-21 14:21:12 - Lena Christensson

Tack för kommentarer i koden, det är guld värt...

Jag satt och kollade lite på icke skrivbara tecken i ASCII och har då en fråga till (surprise...)
Vilka av dessa kan man använda sig av i VB/ASP och hur?
Jag har liksom "tänkt" på ett formulär (html) som motsvarande ett .txt dokument.
Skulle jag exempelvis rent teoretiskt kunna läsa om en "Horizontal Tab" till en <blockquote>?
För att undvika missförstånd så är jag medveten om att jag hamnar i nästa fält om jag "tabbar" i ett formulär, men det finns ju de användare (och jag själv med för den delen) som hämtar text som är formaterad på annat ställe och kör copy&paste på denna.
I det fallet så följer ju "tabbarna" med in formuläret.

Vad jag oxå undrade över är hur strängen med vbCrLf ser ut?
Om jag skriver "Pelle" med en massa radmatningar på slutet... hur lagras detta?
När jag läser denna raden:
mid(textVar, iLen - 1, 2) = vbCrlf
Så "känns" det som att "Pelle" stängen skulle se ut:
strString = 'P' | 'e' | 'l' | 'l' | 'e' | 'v' | 'b' | 'C' | 'r' | 'l' | 'f'| osv...
Har därför lite problem med att förlika mej med tanken att att vbCrlf motsvarar 2 tecken.

Är jag lite lagom rörig? :)


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-21 14:34:13 - Johan Bovin

Cr och Lf är endast en bokstav var, eller rättare sagt ett ASCII värde.
En sträng består ju egentligen av en massa ascii-värden så ditt exempel skulle ju bestå av asii-värdet för P (80) ...e(101), Cr (13), Lf (10)

/Johan


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-21 15:55:39 - Jonas Gauffin

vbCrLF är en text konstant som innehåller Cr och Lf.
Cr är som jag sa en förkortning för CarrigeReturn, asciikoden är 13
Lf är en fortkortning för linefeed, asciikoden är 10.

så textsträngen i dittfall är |P|e|l|l|e|Cr|Lf|
Om man tittar på asciivärdena är det: |80|101|108|108|101|13|10|

är du med?


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-22 15:26:03 - Tobias Ivarsson

men om man nu vill kunna erbjuda sin kod till både windows och unix användare borde man kanske skriva om den lite för att kunna fånga upp enbart Lf(om nu unix enbart använder Lf, är inte insatt personligen)... någonting sånt här:

<code>
Function CropLastCrLf(Value)
Dim lngPos
Dim lngCharsLen
lngPos = Len(textVar)
Do While ( (Mid(Value, lngPos, 1) = Chr(10)) or (Mid(Value, lngPos, 1) = Chr(13)) )
lngPos = lngPos - 1
Loop
CropLastCrLf = Left(Value, lngPos)
End Function
</code>

det blir något fler loopar, men å andra sidan blir kompabiliteten bättre...


Svara

Sv: Oönskade radbrytningar

Postades av 2002-08-22 16:33:54 - Andreas Hillqvist

*Ryser*<br>
<br>
Skriv då istället:
<code>
Function CropLastCrLf(Value)
Dim lngPos
For lngPos = Len(Value) To 1 Step -1
Select Case Mid(Value, lngPos, 1)
Case vbCr, vbLf
Case Else
Exit For
End Select
Next
CropLastCrLf = Left(Value, lngPos)
End Function


</code>
Skillnader:<br>
* Använd inte funktionen chr() i onödan. Finns konstanter för 13, vbCr, och 10, vbLF.
* Att hämta tecknet två gånger är onödigt. Använd variabel eller Select Case.
* VB är dålig på optimering av utryck. De evaluerar = före OR. Så använd ElseIf.
* Men for satsen slapp jag undan några rader kod.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 825
27 960
271 761
3 047
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies