dim orginalstring
orginalstring = "Kalle"
response.write replace(orginalstring,"Kalle","Anka")
kan även göras med en array..
13 svar · 1 029 visningar · startad av Vinnaren
Hej
Jag skulle behöva hjälp med en Replace Funktion.
Den ska kolla igenom alla textrutorna på sidan som sparas i databasen efter flera olika ord som sedan ska ersättas med något annat.
tex. Kalle --> Anka
Undrar då hur man gör en sådan på smidigaste sättet?
Tacksam för all hjälp :bire
dim orginalstring
orginalstring = "Kalle"
response.write replace(orginalstring,"Kalle","Anka")
kan även göras med en array..
ok, men hade mer tänkt att den skulle se ut såhär:
Function SafeSQL(strText)
SafeSQL = Replace(strText, "'", "''")
End function
så man kan tex anropa den sen. Men hur gör man om man ska ersätta flera ord som ev kan finnas med i textfälten? (i samma funktion)
tex.
Kalle -->Anka
Kalle1 --> Anka1
osv
:q
just nu kommer den ta allt med Kalle att göra och ersätta..
du kan göra en array också.. om du vill ha Musse --> Pigg , Mimmi --> Mrs.Pigg etc..
du får köra en split på de ord du vill leta och de ord du ska ersätta träffen med... dock måste det vara lika många i båda arrayerna :D
Function myReplace(strText)
Dim tmp
tmp = Replace(strText, "'", "''")
tmp = Replace(tmp, " Karl ", " Kalle ")
tmp = Replace(tmp, " Bo ", " Bosse ")
tmp = Replace(tmp, " Hans ", " Hasse ")
'Fortsätt att fylla på med flera här...
myReplace = tmp
End function
Travoni skrev:
Function myReplace(strText) Dim tmp tmp = Replace(strText, "'", "''") tmp = Replace(tmp, " Karl ", " Kalle ") tmp = Replace(tmp, " Bo ", " Bosse ") tmp = Replace(tmp, " Hans ", " Hasse ") 'Fortsätt att fylla på med flera här... myReplace = tmp End function
inte så bra att använda " Karl " då meningen kan börja med "Karl heter en man" .. då kommer den aldrig träffar det...
Går att lösa med Reg.Exp så att det blir ordbundet..
Function myReplace(strText)
strText = replace(strText,"'","''")
With New RegExp
.Global = True
.IgnoreCase = True
.Pattern = "^(Karl)$"
strText = .Replace(strText ,"Kalle")
.Pattern = "^(Bo)$"
strText = .Replace(strText ,"Bosse")
End With
myReplace = strText
end function
då kommer även kArL men inte karl1 träffas...
kan man göra så man kopplar denna till en databas som man kan lägga in ord som inte får anv i gästboken? Om man tex har fällten repOrd och repAndratill i tabellen andraord.
Så man inte kan skicka in massa javascript kod som körs i gästboken och andra otrevliga ord.
jo... klart du kan...
haha, oki, men hur? ska man loopa fram
.Pattern = "^(Karl)$"
strText = .Replace(strText ,"Kalle")
massa gånger då? (namnet byts då mot fälltnamnen)
Om ingen HTML får användas kanske Server.HTMLEncode() tål att ses över.
Vill du förbjuda vissa taggar kan följande brukas
set re = new regexp
re.pattern = "<(script|object|table)"
re.global = true
re.ignorecase = true
txt = re.replace(txt, "<$1")
re.pattern = "</(script|object|table)"
txt = re.replace(txt, "</$1")
set re = nothing
Om du har en tabell (som du beskriver ovan):
set rs = ...
if not rs.eof then
set re = new regexp
re.global = true
re.ignorecase = true
do while not rs.eof
re.pattern = "\b" & rs("repOrd") & "\b"
txt = re.replace(txt, rs("repAndraTill"))
rs.movenext
loop
set re = nothing
end if
om jag förstått din tabelldesign rätt.
ok, tackar :p
Denna såg väldigt liten och smidig ut.
dim orginalstring
orginalstring = "Kalle"
response.write replace(orginalstring,"Kalle","Anka")
Men om orginalstring är ="images
Hur får man till det då?
dim orginalstring
orginalstring = "="images"
response.write replace(orginalstring,"="images","="../images")
Lär ju inte fungera vad? Kan man köra dubbla "" eller nåt annat för att få det att fungera?
dim orginalstring
orginalstring = "=""images"
response.write replace(orginalstring,"=""images","=""../images")
eftersom " bryter strängen så måste du använda dig av "" för "