Solved

Bad Words Filter

Posted on 2013-11-07
3
371 Views
Last Modified: 2013-11-08
Hi Guys

The following function takes a string of characters (words) and filters through them looking for "bad words" - the bad words are contained in an array - what I would like to do is use a text file which has one bad word per line - so I need to load the text file, line by line into an array - how would I do that? I know I can do that by using a table, but if I use a textfile, several programs can use it with less overhead.

Function ReplaceBadWords(InputComments)
Dim badChars, newChars, sLength, sAttachtoEnd, x, i
'create an array of bad words that should be filtered
badChars = array("rubbish", "crap", "shit", "cunt", "bastard", "prick", "fuck")
newChars = InputComments
'loop through our array of bad words
    For i = 0 to uBound(badChars)
        'get the length of the bad word
        sLength=Len(badChars(i))
        'we are going to keep the first letter of the bad word and replace all the other 
        'letters with *, so we need to find out how many * to use
        For x=1 to sLength-1
            sAttachtoEnd=sAttachtoEnd & "*"
        Next
        'replace any occurences of the bad word with the first letter of it and the 
        'rest of the letters replace with *
        newChars = Replace(newChars, badChars(i), Left(badChars(i),1) & sAttachtoEnd)
        sAttachtoEnd=""
    Next
ReplaceBadWords = newChars
End function

Open in new window


MTIA

DWE
0
Comment
Question by:dwe0608
  • 2
3 Comments
 
LVL 32

Accepted Solution

by:
Big Monty earned 500 total points
ID: 39633526
here's a function you can use to dump a text file into an array:

Function File(filename)	
    Dim fso,ts, myarray

    Const ForReading = 1
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(filename, ForReading)

    reDim myarray(0)	

    i=-1

    While not ts.AtEndOfStream
      i=i+1
	
      Redim Preserve myarray(i)
      myarray(i)=ts.ReadLine
    Wend

    ts.Close
    File=myarray
  End Function

Open in new window


source
0
 
LVL 1

Author Closing Comment

by:dwe0608
ID: 39634806
Thanks greatly for the function
0
 
LVL 1

Author Comment

by:dwe0608
ID: 39634812
This is how I implemented the function ... and I've attached the bad words file I have used as well.

Function ReplaceBadWords(InputComments)
Dim badChars, newChars, sLength, sAttachtoEnd, x, i
'create an array of bad words that should be filtered
'badChars = array("rubbish", "crap", "shit", "cunt", "bastard", "prick", "fuck")
dim fn
fn = server.mappath("badwords.txt")
badchars = BadWordsFile(fn)
newChars = InputComments
'loop through our array of bad words
    For i = 0 to uBound(badChars)
        'get the length of the bad word
        sLength=Len(badChars(i))
        'we are going to keep the first letter of the bad word and replace all the other 
        'letters with *, so we need to find out how many * to use
        For x=1 to sLength-1
            sAttachtoEnd=sAttachtoEnd & "*"
        Next
        'replace any occurences of the bad word with the first letter of it and the 
        'rest of the letters replace with *
        newChars = Replace(newChars, badChars(i), Left(badChars(i),1) & sAttachtoEnd)
        sAttachtoEnd=""
    Next
ReplaceBadWords = newChars
End function
' note there is no error checking
' if we pass a file with nothing in it, it may throw an error
Function BadWordsFile(filename)	
    Dim fso,ts, myarray
    Const ForReading = 1
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(filename, ForReading)
    reDim myarray(0)	
    i=-1
    While not ts.AtEndOfStream
      i=i+1
      Redim Preserve myarray(i)
      myarray(i)=ts.ReadLine
    Wend
    ts.Close
    set ts = nothing
    set fso = nothing
    BadWordsFile=myarray
End Function

Open in new window

badwords.txt
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

I recently decide that I needed a way to make my pages scream on the net.   While searching around how I can accomplish this I stumbled across a great article that stated "minimize the server requests." I got to thinking, hey, I use more than one…
Have you ever needed to get an ASP script to wait for a while? I have, just to let something else happen. Or in my case, to allow other stuff to happen while I was murdering my MySQL database with an update. The Original Issue This was written…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now