webForumDet fria alternativet

Ersätta radbrytning

ASP

7 svar · 576 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej! :)

Jag har följande lilla finfina funktion som byter ut otillåtna tecken, mot något som är tillåtet i filnamn.

'Funktion som byter ut otillåtna tecken. Ersätts med 'replacement'
function ReplaceCharachters(s, replacement)
         dim re
		 
         set re = new regexp 
         re.pattern = "[*/\\;:?|]" 
         re.global = true 
         ReplaceCharachters = re.replace(s, replacement) 
end function

Hur fixar man till den att även hantera radbrytningar? Dvs att dess byts ut.

Mvh
Henrik

Medlem sedan jan. 20013 582 inlägg
#2

Så här:

'Funktion som byter ut otillåtna tecken. Ersätts med 'sReplacement'
function ReplaceCharachters(sString, sReplacement)
        dim re, s
		 
        set re = new regexp 
        re.pattern = "[*/\\;:?|]" 
        re.global = true 
        s = re.replace(sString, sReplacement)
	s = replace(s, chr(10), sReplacement)
	s = replace(s, chr(13), sReplacement)
	
	ReplaceCharachters = s
end function

???

Mvh
Henrik

Medlem sedan juni 20019 519 inlägg
#3
[*/\\;:?|\n]

annars fungera det väl som du skriver i ditt andra inlägg (även om jag hade kört på vbcrlf)

Medlem sedan jan. 20013 582 inlägg
#4

voigtann1 skrev:

[*/\\;:?|\n]

annars fungera det väl som du skriver i ditt andra inlägg (även om jag hade kört på vbcrlf)

Så, det finns tre lösningar

1 regexp
2 Chr(10) och Chr(13)
3 VbCrLf

Vilket är bäst, och varför?

:)

Mvh
Henrik

Medlem sedan juni 20019 519 inlägg
#5

Jag kan tycka RegEx, eftersom du redan har öppnat RegEx objektet så kan du lika väl använda den, men annars spelar det ingen större roll hur du gör det, det är inte direkt en prestanda fråga med en eller två extra replace. Kör på det du känner dig säker med.

Medlem sedan mars 20041 505 inlägg
#6

devotion skrev:

2 Chr(10) och Chr(13)
3 VbCrLf

vbCrLf är en konstant med värdet Chr(13) & Chr(10) (Carriage return och Line feed).
Det är exakt samma sak.
http://msdn.microsoft.com/en-us/library/hh277t8e(VS.85).aspx

Medlem sedan jan. 20013 582 inlägg
#7

Aha...

'Funktion som byter ut otillåtna tecken. Ersätts med 'sReplacement'
function ReplaceCharachters(sString, sReplacement)
        dim re, s
		 
        set re = new regexp 
        re.pattern = "[*/\\;:?|]" 
        re.global = true 
        s = re.replace(sString, sReplacement)
	s = replace(s, VbCrLf, sReplacement)
	
	ReplaceCharachters = s
end function

eller

'Funktion som byter ut otillåtna tecken. Ersätts med 'sReplacement'
function ReplaceCharachters(sString, sReplacement)
        dim re, s
		 
        set re = new regexp 
        re.pattern = "[*/\\;:?|\n]" 
        re.global = true 
        s = re.replace(sString, sReplacement)
	
	ReplaceCharachters = s
end function

Lite mindre kod med alt 2...

Mvh
Henrik

Medlem sedan juni 20019 519 inlägg
#8

Som sagt, kör på det du känner dig mest bekväm med, replace() är inte en tung funktion ändå.

277 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)