Avatar billede angelenglen Nybegynder
30. juli 2012 - 10:25 Der er 8 kommentarer og
1 løsning

ASP RegEx erstat tegn med bindesterg

Jeg har brug for via regex, at erstatte alle tegn der ikke er et af nedenstående godkendte tegn, med en bindestreg.

Godkendte tegn:
a-z
A-Z
0-0
bindestreg og bundstreg

(mellemrum og punktum skal også erstattes)

Så fx:
"abc+def=ghi.jkl'mop"
bliver til:
"abc-def-ghi-jkl-mop"

jeg har brug for at det kun er de godkendte tegn der "overlever" - det må ikke virke således at jeg skal lave en liste over tegn der skal fjernes, eftersom der jo findes rigtigt rigtigt mange tegn som jeg ikke lige kan komme i tanke om.
Avatar billede lclemens Nybegynder
30. juli 2012 - 10:36 #1
Prøv:

Set re = New RegExp
re.Pattern = "[^a-zA-Z0-9_-]"
re.Global = True

str = "abc+def=ghi.jkl'mop"
str = re.Replace(str, "-")
Avatar billede angelenglen Nybegynder
30. juli 2012 - 10:57 #2
Var i mellemtiden kommet frem til nedenstående, men kan bedre lide din, så du må meget gerne lægge et svar.

Function ReplaceNonAlphaNumericCharacters(ByVal txt, ByVal ReplacementChar)
    Set regEx = New RegExp
    regEx.Global = True
    regEx.Pattern = "[\W_]"
    ReplaceNonAlphaNumericCharacters = regEx.Replace(txt,ReplacementChar)
    Set regEx = Nothing
End Function
Avatar billede olebole Juniormester
30. juli 2012 - 15:04 #3
<ole>

"det må ikke virke således at jeg skal lave en liste over tegn der skal fjernes, eftersom der jo findes rigtigt rigtigt mange tegn som jeg ikke lige kan komme i tanke om."

Umiddelbart kunne men frygte, scriptet kunne være et forsøg på at øge sikkerhed ved bruger-input. I så fald tager du fat i den helt forkerte ende. Så skal du nemlig netop gøre det modsatte - altså definere de tilladte tegn og kun godkende dem. Årsagen er den, du selv angiver: "eftersom der jo findes rigtigt rigtigt mange tegn som jeg ikke lige kan komme i tanke om.".  =)

/mvh
</bole>
Avatar billede olebole Juniormester
30. juli 2012 - 15:29 #4
Jeg kom lige pludselig i tanker om, at jeg muligvis havde læst din kommentar forkert. Nu, hvor jeg er vendt tilbage til den, ser jeg, at jeg vrøvlede *totalt* i #3 ... sorry!  =)

Du gør naturligvis det helt rigtige ved at definere lovlige tegn - og ikke ulovlige  *o)
Avatar billede angelenglen Nybegynder
03. august 2012 - 09:47 #5
Det er lige præcis hvad jeg mente - glad for at vi er enige om at det er den rette løsning :-)

Det skal dog ikke bruges til brugerinput som sådan... well på en måde... det skal bruges i forbindelse med fil-upload, hvor jeg ikke gider se underlige tegn som æ,ø,å,ö,~ osv. osv. i filnavnene :-)

(Der skal nemlig linkes til filerne senere, og URL'er er bare bedre uden specialtegn.)

Ps. laver lige dette til et svar, i tilfælde af at lclemens ikke vender tilbage med et svar snart.
Avatar billede olebole Juniormester
03. august 2012 - 14:40 #6
Jamen, vi er helt enige om, at det er den rette vinkel at angribe sikkerhed fra. På den anden side synes jeg ikke, man bør spilde tid med specialtegn. Nu har vi haft WWW i 20 år - så nu burde man roligt kunne formode, folk har lært de mest elementære ting.

Hvis man sidder med et åbent, ikke-gemt Word dokument på sin laptop og piller batteriet ud - ja, så ved alle, man har kvajet sig Big Time! Ved man ikke det, må man lære det på den hårde måde  *o)

På et eller andet tidspunkt må folk lære at bruge det skidt, de køber. Hvis folk ikke kan modstå fristelsen til at uploade filer (som regel billeder), må de lære, at til WWW uploader man ikke gigantiske digi-billeder - og at til WWW uploader man ikke filer med specialtegn i navnet.

Vil man udgive bøger, må man lære at skrive og aflevere et manuskript i passende tilstand. Hvis man vil udgive musik, må man lære at stemme sit instrument og spille på det. Vil man køre en bil, må man tage et kørekort og lære at køre - og man kunne blive ved og ved.

Hvis folk uploader filer med specialtegn i navnet, bør du vel bare afvise den pågældende upload og fortælle, hvorfor. Efter min mening er det udtryk for større brugervenlighed at lære folk noget - fremfor at tørre dem i r*ven. For så lærer de nemlig aldrig at gøre noget rigtigt  =)
Avatar billede angelenglen Nybegynder
07. august 2012 - 20:22 #7
Grundlæggende er jeg enig.

Desværre virker det bare ikke altid i praksis, når man laver løsninger der skal bruges af folk med ringe it-kundskaber.

Faktisk var første løsning baseret på at afbryde og informere brugeren hvis der var dumme tegn i filnavnet, men brugerne blev utilfreds/irriterede og holdt op med at bruge systemet i stedet for.
...så nu bliver filnavnene rettet for dem.
Avatar billede olebole Juniormester
07. august 2012 - 20:47 #8
Der er et hav af mellemløsninger. Der er jo ingen, som siger, din første løsning var hensigtsmæssigt lavet. Glæden ved at lære nyt ligger dybt i de fleste, så det er næppe det, at du rettede brugerne, der var årsagen til 'brugerflugten' ... måske skulle du kikke på måden.

Der findes bunker af god læsning om psykologien i validering og fejlmeddelelser. Prøv  f.eks. denne artikel som et sted at begynde
Avatar billede olebole Juniormester
07. august 2012 - 20:51 #9
- og så er det næppe klogt at undervurdere brugeren ... heller ikke hende med 'ringe IT-kundskaber'. Ofte er hendes begavelse og indlæringsevner væsentligt bedre end udvikleren i den anden ende kan mønstre  *o)
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



Seneste spørgsmål Seneste aktivitet
I dag 06:10 Excel åbner fil i kæmpe format Af Aske i Excel
I går 22:00 Datafordeler Af Lsk i PHP
I går 12:37 Summere beløb pr. dato Af TTA i Excel
31/1022:44 Tilslutte chassic fans Af viking69 i PC
31/1020:28 LED lysstofrør Af ErikHg i Fri debat