Avatar billede kimlarsen1978 Nybegynder
20. oktober 2007 - 14:21 Der er 24 kommentarer og
2 løsninger

RegExp til at fjerne overflødige mellemrum

Hejsa
Jeg har brug for en lille RegExp funktion som kan fjerne alle overflødige mellemrum i en tekst?

Noget alla:
**************
tekst1 = "     Dette  er min  tekst     "

Funtion formaterTekst(str)
  RegExp = ??????
  ????????
  formaterTekst = str
End Function

tekst2 = formaterTekst(tekst1)

Response.Write tekst2

***************

Resultat: Dette er min tekst
Avatar billede nielle Nybegynder
20. oktober 2007 - 14:29 #1
Sådan?

Funtion formaterTekst(str)
    re = new RegExp
    re.Patteren = " "
    formaterTekst = re.Replace(str, "")
End Function
Avatar billede kimlarsen1978 Nybegynder
20. oktober 2007 - 15:19 #2
Hejsa
Jeg har lavet det til:

Function formaterTekst(str)
    Set re = New RegExp

    re.Pattern = " "
    str = re.Replace(str, " ")
   
    re.Pattern = " "
    str = re.Replace(str, "")
   
    formaterTekst = str
End Function

Men det virker ikke, den er fortsat masser af mellemrum og   i min tekst
Avatar billede nielle Nybegynder
20. oktober 2007 - 15:22 #3
Prøv at sætte en Global på:

Function formaterTekst(str)
    Set re = New RegExp
    re.Global = True

    re.Pattern = " "
    str = re.Replace(str, " ")
   
    re.Pattern = " "
    str = re.Replace(str, "")
   
    formaterTekst = str
End Function
Avatar billede kimlarsen1978 Nybegynder
20. oktober 2007 - 15:35 #4
Jo det hjalp, men den fjerner alle mellemrum og ikke kun de ekstra?
Avatar billede nielle Nybegynder
20. oktober 2007 - 15:41 #5
Og med "ekstra mellemrum" mener du dubletter og sådan noget?

Function formaterTekst(str)
    Set re = New RegExp
    re.Global = True

    re.Pattern = " "
    str = re.Replace(str, " ")
   
    re.Pattern = " +"
    str = re.Replace(str, " ")
   
    formaterTekst = str
End Function
Avatar billede gammelhat Nybegynder
20. oktober 2007 - 15:49 #6
re.Pattern = "( | )+"

prøv om du ikke kan få den til at tage det hele i en replace
Avatar billede kimlarsen1978 Nybegynder
20. oktober 2007 - 16:03 #7
nielle: Det hjalp :-)
gammelhat: hvis jeg bruger din forsvinder hele teksten?

nielle: svar bitte :-)
Avatar billede nielle Nybegynder
20. oktober 2007 - 16:06 #8
Det lyder temmeligt underligt - det burde ellers virke. Hvordan ser din kode ud?
Avatar billede nielle Nybegynder
20. oktober 2007 - 16:07 #9
Forresten skal det hele måske toppes af med en Trim() sådan at mellemrum i start og slut også bliver slagtet.
Avatar billede olebole Juniormester
20. oktober 2007 - 16:17 #10
<ole>

Er det ikke en lang vej over åen for et snapseglas vand?  :)

Function formaterTekst(str)
    formaterTekst = Replace(str, " ", "")
End Function

/mvh
</bole>
Avatar billede gammelhat Nybegynder
20. oktober 2007 - 16:18 #11
Du skal jo ikke tømme hele åen for vand
Avatar billede olebole Juniormester
20. oktober 2007 - 16:22 #12
Argh ... havde overset, den også skulle fjerne '&nbsp;'  :o|
Ja, så er man nødt til at bruge RegExp - hvis man ikke vil bruge to på hinanden følgende Replace  :)

Function formaterTekst(str)
    Dim str2
    str2 = Replace(str, " ", "")
    formaterTekst = Replace(str2, "&nbsp;", "")
End Function
Avatar billede gammelhat Nybegynder
20. oktober 2007 - 16:23 #13
Du tømmer jo stadig hele åen :)
Avatar billede olebole Juniormester
20. oktober 2007 - 16:26 #14
ehhhhh ... er der mon nogen, der kan anbefale en god læsebog, som kan højne en aldrende programmørs sparsomme læseevner? ... sorry!  ;D
Avatar billede nielle Nybegynder
20. oktober 2007 - 16:59 #15
kimlarsen1978> Det er da ikke fordi at jeg ikke vil smide et svar, men 20/10-2007 15:49:07 burde faktisk virke. Så hvordan ser din kode ud, den som fejler?
Avatar billede kimlarsen1978 Nybegynder
20. oktober 2007 - 20:06 #16
Denne virker ikke (fjerner hele teksten):
****************************
Function formaterTekst(str)
    Set re = New RegExp
    re.Global = True

    re.Pattern = "( |&nbsp;)+"
    str = re.Replace(str, " ")
End Function
******************************

Denne virker som den skal (fjerner alle de OVERFLØDIGE mellemrum):
******************************
Function formaterTekst(str)
    Set re = New RegExp
    re.Global = True

    re.Pattern = "&nbsp;"
    str = re.Replace(str, " ")
   
    re.Pattern = " +"
    str = re.Replace(str, " ")
   
    formaterTekst = str
End Function
********************************
Avatar billede gammelhat Nybegynder
20. oktober 2007 - 20:22 #17
formaterTekst = str

den linje fortæller hvad funktionen skal returnere. Den har du ikke med i den øverste, dvs den returnerer ingenting
Avatar billede kimlarsen1978 Nybegynder
21. oktober 2007 - 10:40 #18
Hold da kæft :-)
Hvor blind kan man være *g*
Avatar billede kimlarsen1978 Nybegynder
21. oktober 2007 - 10:42 #19
Så virker de begge jo fint :-)
Avatar billede nielle Nybegynder
21. oktober 2007 - 10:42 #20
Yep :^)
Avatar billede kimlarsen1978 Nybegynder
21. oktober 2007 - 13:57 #21
Jeps!
Kom gerne med et par svar :-)
Avatar billede nielle Nybegynder
21. oktober 2007 - 14:04 #22
Svar :^)
Avatar billede kimlarsen1978 Nybegynder
21. oktober 2007 - 16:47 #23
gammelhat - svar?
Avatar billede gammelhat Nybegynder
21. oktober 2007 - 18:42 #24
ok
Avatar billede kimlarsen1978 Nybegynder
21. oktober 2007 - 19:49 #25
Tak for hjælpen!
Avatar billede nielle Nybegynder
21. oktober 2007 - 20:11 #26
Tak for point :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester