Avatar billede bongii Nybegynder
03. april 2008 - 08:48 Der er 6 kommentarer og
1 løsning

avanceret validering

Hej.

Jeg har en streng som jeg gerne vil validere.

Strengen skal valideres ud fra en række tal og bogstaver, f.eks:
a,b,c,d,e,f,g,3,4,5,+,- osv. (faktisk alle gyldige database tegn)
Hvis der findes et tegn i strengen der ikke findes blandt de "gyldige" tegn, skal tegnet fjernes.

Problemet er, at det der indsættes i min database, er copy/paste fra et PDf. Derfor forekommer der underlige tegn som databasen brokker sig over. Derfor tror jeg det er smartere at lave en "gyldig liste", end  en masse replace.

Er der nogle der ligger inde med et script til dette? Jeg kan ikke lige se hvordan det skal laves.
Avatar billede keysersoze Ekspert
03. april 2008 - 09:16 #1
det eneste en database burde brokke sig over er tegnet ' og det kan løses med replace(var, "'", "''") - hvilke andre tegn oplever du problemer med?
Avatar billede bongii Nybegynder
03. april 2008 - 09:33 #2
www.movievizion.dk/upload/fejl.gif

Tegnet forekommer efter jeg kopiere en slags trekant i en pdf.
Avatar billede nielle Nybegynder
03. april 2008 - 10:12 #3
Det kunne f.eks. gøres på nogenlunde denne måde:

LovligeTegn = "abcdefg345+-"

Set re = New RegExp
With re
    .Pattern = "[^" & LovligeTegn & "]"
    .IgnoreCase = True
    .Global = True
End With

text = re.Replace(text, "")


Denne løsning bruger regulære udtryk:

http://www.eksperten.dk/artikler/1156

Det er ikke helt ligegyldigt hvordan strengen LovligeTegn må se ud for at det skal virke. F.eks. skal '-'-tegnet være til sidst, og der kan også opstå problemer med '[' og ']'. Desuden er der nogle genveje man kan tage f.eks. hvis alle bogstaver og alle tal er lovlige:

LovligeTegn = "a-zæøå0-9+-"
Avatar billede bongii Nybegynder
03. april 2008 - 12:22 #4
Nielle det gav for mange muligheder for fejl.
Har løst det med replace(Name, chr(2), "")
Avatar billede nielle Nybegynder
03. april 2008 - 14:09 #5
Var det ikke dig selv der bad om en avanceret løsning? ;^)

Umiddelbart forstår jeg nu ikke lige hvad du mener med at det skulle give mange muligheder for fejl? Selve grundprincippet bag løsningen er faktisk uhyre simpelt når det kommer til stykket.
Avatar billede bongii Nybegynder
03. april 2008 - 14:54 #6
Jo sorry. Men fandt ud af at replace med chr(2), chr(3), chr(4) og chr(5) var meget lettere.
Avatar billede nielle Nybegynder
03. april 2008 - 15:01 #7
Hvordan lettere?

Hvis det ikke kun er et enkelt tegn som du replacer, så ender du jo hurtigt i det du starede med at ville undgå:

"Derfor tror jeg det er smartere at lave en "gyldig liste", end  en masse replace."
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