[ASP] Regular Expression : Trim

Pagina: 1
Acties:

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
Ik wil op mijn forum bij een bericht als dit:
dit is een bericht met een aantal enters teveel aan de voor en achterkant.
omzetten naar dit:
dit is een bericht met een aantal enters teveel aan de voor en achterkant.
De enters moeten aan de voor en achterkant weg. De trim functie in asp trimt alleen spaties dus moet ik het oplossen met een regular expression:

code:
1
2
RegExpr.Pattern = "(\n)+?(.*?)(\n)+?"
strMessage = RegExpr.Replace(strMessage, "$2")


Maar dit werkt niet.
Al zou het matchen dan heb je ook het probleem dat hij midden in een string ook gewoon vrolijk gaat replacen.

Hoe moet dat ding dan in elkaar zitten?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:11

gorgi_19

Kruimeltjes zijn weer op :9

Probeer eens te matchen op \r\n

Sowieso zal je <br> moeten verwijderen, gok ik.

[ Voor 53% gewijzigd door gorgi_19 op 16-01-2005 13:15 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
<br /> is niet nodig want het is op dat moment nog niet door een ubb/asp --> html parser heen geweest. dat betekent dat enters nog gewoon chr(13) en in een reg epr \n zijn...

\r\n zal toch problemen geven met unix denk ik?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:11

gorgi_19

Kruimeltjes zijn weer op :9

Mischa_NL schreef op zondag 16 januari 2005 @ 13:18:

is niet nodig want het is op dat moment nog niet door een ubb/asp --> html parser heen geweest. dat betekent dat enters nog gewoon chr(13) en in een reg epr \n zijn...

\r\n zal toch problemen geven met unix denk ik?
VbCrLf = \r\n , de constante voor VBScript voor een nieuwe regel.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Je kan in een regexp aangeven dat je wil je wil matchen op het begin of einde van een string.

regexp = /^start eind$/

Today's subliminal thought is:


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Ik kan geen ASP, maar in Perl zou ik het als volgt doen:

Perl:
1
$bericht =~ s/(^(\n\r?)+)|((\n\r?)+$//g;


Even stukje voor stukje toelichten:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$bericht =~   geeft aan dat je een regexp wil toepassen op de var $bericht.
s/    geeft aan dat je wilt gaan substituten

( nieuwe groep
    ^ begin van de string   
    ( nieuwe groep
        \n\r? een \n, en eventueel een \r
    )+ einde groep, deze groep mogelijk meermalen achter elkaar
)|( einde groep en nieuwe groep, gescheiden door OR
    ( nieuwe groep
        \n\r? een \n, en eventueel een \r
    )+ einde groep, deze groep mogelijk meermalen achter elkaar
    $ einde string
) einde groep

// vervang het gevonden resultaat met een lege string (hetgeen tussen de twee slashes)
g global: alles zoeken en vervangen

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

of gewoon \s (=alle whitespace karakters) ;)

als er al windows newlines inzitten dan is dat \r\n en niet \n\r
mac newlines zijn enkel \r en *nix newlines \n

[ Voor 65% gewijzigd door crisp op 16-01-2005 15:30 ]

Intentionally left blank


Verwijderd

strMessage = Replace(strMessage, Chr(13) & Chr(10), "")

vbCrLf = Chr(13) & Chr(10)

Maar binnen ASP is de constante vbCrLf niet bekend dus vandaar Chr(10) & Chr(13) wat hetzelfde resultaat geeft.

[ Voor 8% gewijzigd door Verwijderd op 16-01-2005 15:37 ]


  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 22:07

Exterazzo

Qeasy

Verwijderd schreef op zondag 16 januari 2005 @ 15:37:
strMessage = Replace(strMessage, Chr(13) & Chr(10), "")

vbCrLf = Chr(13) & Chr(10)

Maar binnen ASP is de constante vbCrLf niet bekend dus vandaar Chr(10) & Chr(13) wat hetzelfde resultaat geeft.
Als je dit doet dan verwijder je ook alle enters in het bericht. Bijv:
test

test
test
wordt dan
testtesttest

Audentia


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 11-05 08:55

sopsop

[v] [;,,;] [v]

Verwijderd schreef op zondag 16 januari 2005 @ 15:37:
Maar binnen ASP is de constante vbCrLf niet bekend dus vandaar Chr(10) & Chr(13) wat hetzelfde resultaat geeft.
??? Echt wel.

Tenminste, mits je gebruik maakt van VBScript i.c.m. ASP

[ Voor 12% gewijzigd door sopsop op 17-01-2005 11:38 ]

Pagina: 1