Om man ska göra en funktion där man ska ersätta varje tecken med någotting annat... hur är det smidigast att gå till väga då?
Genom en for slinga eller regular expressions...
Går det att göra med båda?
7 svar · 293 visningar · startad av Rinaldo
Om man ska göra en funktion där man ska ersätta varje tecken med någotting annat... hur är det smidigast att gå till väga då?
Genom en for slinga eller regular expressions...
Går det att göra med båda?
Jag kommer alltså ha en string med kanske en mening och alla olika tecken i den kommer jag vilja ersätta med andra tecken, bilder eller dylikt.
Hur gör jag detta lättast...
typ så här?
Function bytaTecken(txt)
txt = Replace(txt, "a", "<img src=""bild_a.gif"">")
txt = Replace(txt, "b", "<img src=""bild_b.gif"">")
bytaTecken = txt
End Function
Ja typ sådär, fast jag vill inte hålla på att byta ut alla, var för sig...
strString = "A"
set objRE = New RegExp
objRE.Global = True
objRE.IgnoreCase = True
objRE.Pattern = "(A)"
strString = objRE.Replace(strString, "<img src=$1.gif>")
response.write strString
Om jag gör det med regexps, hur kan man då göra för att bara behöva använda en eller kanske några replace å ändå ersätta alla med bilder eller någoting annat...?
(koden bara skriven ur huvet så det är säkert något fel)
R: Om jag bara sätter en . i pattern så skriver den väl ut alla tecken och bilder, men hur gör jag då med radmatningar och mellanslag?
strString = "A"
set objRE = New RegExp
objRE.Global = True
objRE.IgnoreCase = True
objRE.Pattern = "(.)"
strString = objRE.Replace(strString, "<img src=$1.gif>")
response.write strString
Vilka tecken vill du byta ut?
Om det är A-Z och a-z så
function repl(string)
dim letter
if len(string) > 0 then
letter = ucase(left(string,1))
if letter >= "A" and letter <= "Z" then
repl = "<img src=" & letter & ".gif>" & repl(mid(string,2))
else
repl = letter & repl(mid(string,2))
end if
else
repl = ""
end if
end function
Tack! Det där verkar bra!
Det kommer vara A-Ö plus en del special tecken...
Två frågor.
Radbrytningar har ingen betydelse
Om du vill skilja på små och stora kan du lägga till fler if (du måste ha något prefix på för att skilja på filerna.)
function repl(string)
dim letter
if len(string) > 0 then
letter = left(string,1)
if (letter >= "A" and letter <= "Z") _
or (letter = "Å" or letter = "Ä" or letter = "Ö" ) then
repl = "<img src=" & letter & ".gif>" & repl(mid(string,2))
elseif (letter >= "a" and letter <= "z" )_
or (letter = "å" or letter = "ä" or letter = "ö" ) then
repl = "<img src=" & letter & "s.gif>" & repl(mid(string,2))
elseif letter = "?" or letter = "?" or letter = "?" then
repl = "<img src=" & "?" & "s.gif>" & repl(mid(string,2))
else
repl = letter & repl(mid(string,2))
end if
else
repl = ""
end if
end function