Avatar billede goose Nybegynder
26. april 2005 - 09:40 Der er 12 kommentarer og
2 løsninger

Erstat ulovlige tegn

I forbindelse med et uploadscript vil jeg gerne erstatte alle ulovlige karakterer i et filnavn med et +
Lovlige karakterer er:
a-z
o-9
- + _

- alt andet skal altså erstattes med et +

Jeg har mit filnavn i variablen "nyt_filnavn".
Normalt bruger jeg en replace funktion i ASP (nyt_filnavn = replace(nyt_filnavn, "æ", "+") o.s.v.) men det må kunne gøres nemmere med Reg.exp.

/Goose
Avatar billede roenving Novice
26. april 2005 - 09:45 #1
ASP ?-)

-- er det VBScript ?o]

dim reg as RegExp 'er det rigtigt ?

txt = "Et filnavn, som er ulovligt"
reg.Pattern = "[^\w+-]"
nytxt = reg.Replace(txt,"+")

-- måske skal du også have Global sat på regexpen !-)
Avatar billede roenving Novice
26. april 2005 - 09:48 #2
Hov, det skal jo nok være: "[^\\w+-]"
Avatar billede goose Nybegynder
26. april 2005 - 10:19 #3
Den erstatter kun den første karakter med + (selvom den ikke er ulovlig) ?

Jeg har indsat:
Set reg = New RegExp

istedet for:
dim reg as RegExp

- og ja, det er i VBscript :o)

/Goose
Avatar billede roenving Novice
26. april 2005 - 10:31 #4
Så skal

reg.Global = True
reg.IgnoreCase = True

-- også med ...

-- og hvis du har problemer med \w kan du jo prøve at skrive det 'langsomt':

[^a-z0-9_+-]
Avatar billede goose Nybegynder
26. april 2005 - 10:42 #5
Det hjalp med den "langsomme" udgave.
Kan det laves således, at den ser bort fra de sidste 4 karakterer i "txt" - den erstatter nemlig også til +jpg :o/

/Goose
Avatar billede roenving Novice
26. april 2005 - 10:53 #6
Jeg kender ingen måde at begrænse en global funktion til en del af strengen, så den ville jeg erstatte baglæns bagefter, da du kender et fast mønster for den, f.eks.

Dim reg2
Set reg2 = New RegExp
reg2.Pattern = "+([a-z]{2,3})$" '2 eller 3 karakterer i slutningen af strengen
reg2.IgnoreCase = True
nytxt = reg2.replace(txt,".$1") ' Jeg er en anelse usikker på parameter-referencen $1 ...
Avatar billede goose Nybegynder
26. april 2005 - 11:34 #7
Jeg løste det på en anden måde idet ASPUpload kan vise fileext.

Smid et svar roenving, du har fortjent dine point :o)

/Goose
Avatar billede ranglen Nybegynder
26. april 2005 - 11:39 #8
Løsningen med regexp, hvor den ser bort fra de sidste karakterer:
reg.Pattern = "[^\w+-](?!.{0,3}$)"

\\w skal være \w i vbscript, da \ ikke er escape karakter
Avatar billede roenving Novice
26. april 2005 - 11:45 #9
-- så var det jo, at jeg gerne ville kende udbredelsen af den notation, for jeg har set den i M$-dokumentationen, men ikke andre steder ...

Men velbekomme, goose '-)

-- og ranglen har jo i hvert fald fortjent noget for sit input også !-)
Avatar billede goose Nybegynder
26. april 2005 - 11:49 #10
Jamen ranglen skal dælme da også tage del i denne pointfest, så smid et svar ranglen :o)

/Goose
Avatar billede goose Nybegynder
27. april 2005 - 06:57 #11
ranglen >> Smider du lige et svar så jeg kan få lukket ?

/Goose
Avatar billede ranglen Nybegynder
27. april 2005 - 23:08 #12
ok
Avatar billede goose Nybegynder
28. april 2005 - 08:55 #13
Jamen så er der lukket og tak for hjælpen til jer begge.

/Goose
Avatar billede roenving Novice
29. april 2005 - 11:56 #14
-- og jeg takker 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