---
title: "Replace"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/9178-replace"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "qwerty"
published: "2001-04-09T11:09:00.000Z"
updated: "2001-04-27T06:40:00.000Z"
replies: 23
views: 403
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/9178-replace"
---

# Replace

_Sida 1 av 2._

## #1 — qwerty, 2001-04-09T11:09Z

Varför byter inte denna kod ut de fula orden?

```
<%
a=Request.Form("textfield")
Application("BadWords") = "Skit Fan Helvete"

strBadWords = Application("BadWords")
arrBadWords = Split(StrBadWords)
For I = LBound(arrBadWords) To UBound(arrBadWords)
strString = Replace (strString,arrBadWords(I),"*****")
Next
%>
<% =a%>
```

Permalänk: https://www.webforum.nu/p/9178

## #2 — PatrikB, 2001-04-09T11:28Z

... därför att strString är tom enligt koden du visar. Antar att det du vill kolla är strängen som finns i variabeln a. Byt a mot strString så kommer det nog att funka =P

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/267272

## #3 — @nders, 2001-04-09T11:28Z

vad är strString? när skapar du den? är det inte innehållet i a du ska censurera?

Permalänk: https://www.webforum.nu/p/267273

## #4 — @nders, 2001-04-09T11:28Z

håll käften, patrikb! ;)

Permalänk: https://www.webforum.nu/p/267274

## #5 — PatrikB, 2001-04-09T11:37Z

he, he ... hann före @nders för en ggns skull :)

Permalänk: https://www.webforum.nu/p/267275

## #6 — qwerty, 2001-04-09T16:46Z

Koden ser nu ut så här:

```

<%

Application("BadWords") = "Skit Fan Helvete"
strString=Request.Form("textfield")
strBadWords = Application("BadWords")
arrBadWords = Split(StrBadWords)
For I = LBound(arrBadWords) To UBound(arrBadWords)
strString = Replace (strString,arrBadWords(I),"*****")
Next
%>
<% =strString%>
```

...men den funkar fortfarande inte. Skriver ut fan och de andra orden.
Nån som vet felet?

Permalänk: https://www.webforum.nu/p/267276

## #7 — PatrikB, 2001-04-09T17:04Z

Ändra din Application med badword till:

```
Application("BadWords") = "skit fan helvete"
```

Sedan ändrar du i själva replacen:

```
strString = Replace (LCase(strString),arrBadWords(I),"*****")
```

borde göra susen ...

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/267277

## #8 — @nders, 2001-04-09T17:07Z

du vet om att du gör en case sensitive replace, antar jag.

själva koden fungerar nämligen utmärkt.

Permalänk: https://www.webforum.nu/p/267278

## #9 — @nders, 2001-04-09T17:07Z

patrikb, vad har jag sagt? ;)

fast problemet med din kod är ju att den resulterande strängen blir lower case. 

jag hade nog använt regexp till detta.

Permalänk: https://www.webforum.nu/p/267279

## #10 — PatrikB, 2001-04-09T17:51Z

jepp, vet att den ändrar allt till LowerCase.
Skulle nog oxå använt mig av RegExp ... fast där är man lite lost så att säga ... men jobbar på den saken =P

Har för mig att Vide har en bra artikel om RegExp

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/267280

## #11 — PatrikB, 2001-04-09T18:26Z

... he, he ... fixade till en liten funktion med regext =P

```
Function checkBadWord(StringToCheck)
	Dim objRegExp, match, matches
	
	Set objRegExp = New RegExp
		objRegExp.Global = True
		objRegExp.IgnoreCase = true
		'## -- byt ut fan, skit, helvet under så att det passar
		'##    dina fula ord. Tänk på att det måste avgränsas med
		'##    pipe och inget annat ... tror jag =P
		objRegExp.Pattern = "(fan&#0124;skit&#0124;helvete)"
		Set matches = objRegExp.Execute(StringToCheck)
			For Each match In matches
				StringToCheck = Replace(StringToCheck,match,"*****")
			Next
		Set matches = Nothing
	Set objRegExp = Nothing
	checkBadWord = StringToCheck
End Function
```

Med qwertys exempel:

```
strString = Request.Form("textfield")
Response.Write checkBadWord(strString)
```

hoppas nu att den funkar ... ;o

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/267281

## #12 — qwerty, 2001-04-10T05:25Z

Tack alla!
det funkar.

...om jag skulle vilja utveckla funktionen och lägga alla de små fula orden i en databas eller i en textfil. Hur skulle man gå till väga då?

Alltså att man lägger upp alla "bad words" och ett ersättningsord för alla.
tex
helvete - helsefyr
jävlar - järnspikar osv.

...för det måste väl vara ett effektivare sätt eller?

Permalänk: https://www.webforum.nu/p/267282

## #13 — PatrikB, 2001-04-10T06:15Z

visst kan man göra det.
Vet inte hur prestandan blir men funkar gör det:

```
Function checkBadWord(StringToCheck)

Dim objRegExp, match, matches, arrPattern, I

	Set objRegExp = New RegExp
		objRegExp.Global = True
		objRegExp.IgnoreCase = true

		arrPattern = Split(Application("BadWords"))

		For I = LBound(arrPattern) TO UBound(arrPattern)

			objRegExp.Pattern = arrPattern(I)

			Set matches = objRegExp.Execute(StringToCheck)

				For Each match In matches

					StringToCheck = Replace(StringToCheck,match,"*****")

				Next

			Set matches = Nothing

		Next

	Set objRegExp = Nothing

	checkBadWord = StringToCheck

End Function
```

Som du ser så splittar jag upp Application objektet till en array och loopar genom arrayen och kör en match för varje värde i arrayen.

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/267283

## #14 — qwerty, 2001-04-10T10:42Z

kanske är jag knäpp
...men var placerar jag listan med de "fula orden".

Permalänk: https://www.webforum.nu/p/267284

## #15 — qwerty, 2001-04-10T11:02Z

Det löste sig!

Och för ni som är lika dumma som mig:

Man läser in textfilen i application!

man lär sig något varje dag...

Permalänk: https://www.webforum.nu/p/267285

## #16 — PatrikB, 2001-04-10T11:20Z

... och den inläsningen bör ske i global.asa's Sub Application_OnStart ...

Annars gör man en global variabel av alla badwords separerade med mellanslag som sedan inkluderas på alla sidor där badword checken ska vara.

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/267286

## #17 — qwerty, 2001-04-10T11:41Z

..men om man bara har badwordchecken på en enda sida kan man väl bara läsa in "ordlistan" där?

Förresten: Ingen som vet var man kan hitta en lista över svordomar och liknande fula ord?

Permalänk: https://www.webforum.nu/p/267287

## #18 — qwerty, 2001-04-10T12:45Z

checka ut detta:

jag har lagt en massa fula ord i en textfil åtskiljda av mellanslag. Allt fukar ända tills man kommer till en svordom som innehåller åäö. Då står det där "j**ä**vla"-ordet kvar. Hur ska jag göra för att den ska ersätta även de ord som innehåller ä. Har försök lägga in orden html-formaterade i ordlistan (j&auml;vlar), men det hjälpte inte. Tacksam för tips.

Permalänk: https://www.webforum.nu/p/267288

## #19 — PatrikB, 2001-04-10T14:34Z

hur har du sparat texten i filen?

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/267289

## #20 — qwerty, 2001-04-11T09:14Z

jag har bara skrivit alla ord i en lång rad i en textfil med "skriv text". Helt rent från taggar och annat.

Permalänk: https://www.webforum.nu/p/267290

---

Tråden på webben: https://www.webforum.nu/amne/asp/9178-replace  
Nästa sida: https://www.webforum.nu/amne/asp/9178-replace/page2.md
