• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 423
  • Last Modified:

Rude word filter

Hi ppl!

I need to add a rude word filter to a webform to check if a user has entered an obscene word in a sentence stored in a string captured from a textbox. Can someone recommend a way of doing this in c#. Also does anyone know a source/library of common rude words to use?

Thanks for your help,
Kevin
0
tnook
Asked:
tnook
1 Solution
 
ruff_ryderCommented:
This sounds like a classic parsing problem. Basically what you want to do is parse the text for your predefined rude words when the Textbox text is validating. I'll start you off by telling you to have a look at the Validating Events for the Textbox control and also the Regex class to help you with the parsing.

Do some reading on those and make an attempt at some code. If you have further problems then check back here and I'll try to help.
0
 
Fahad MukhtarDistinguished EngineerCommented:
you can have an arraylist and then filll targat arraylist with all the common rude words...

if (RudeWords.Contains(InputWord)) //input word from user is being checked
 {
//word is catch!!
 }
0
 
armoghanCommented:
This link shows an example to do such things
http://www.codefixer.com/codesnippets/replacebadwords.asp
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
ptmcompCommented:
This could work similar to SPAM filters like K9. First parse the text and seperate words (e.g. using regex), then look them up in a hashtable/database.
0
 
jackiechen858Commented:
I agree with ptmcomp's suggestion:

                  string Commend= "I love this game game";

                  string []words= Commend.Split(new Char[] {' '});
                  Hashtable ht = new Hashtable();
                  for ( int i=0;i< words.Length;i++)
                  {
                        if ( !ht.ContainsKey(words[i].ToLower()) )
                              ht.Add(words[i],words[i].ToLower());
                  }
                  ArrayList badwords = new ArrayList();
                  badwords.Add("bad");
                  bool bFind = false;
                  for ( int i=0;i<badwords.Count;i++)
                  {
                        if ( ht.ContainsKey(badwords[i]))
                        {
                              bFind=true;
                              break;
                        }
                  }


If the input is quite a long sentence, it will be more efficient than searching the whole string. But if the input is a different language which don't split words by space,  that's a different story.
0
 
DominicCroninCommented:
Don't forget that a poor implementation will earn you the scorn of all the inhabitants of Scunthorpe and Penistone.
0
 
smeggheadCommented:
I know Scunthorpe is a place, and a football team, but is Penistone a place ?? never heard of that one.
0
 
DominicCroninCommented:
Indeed Penistone is a place. I imagine they suffer just as badly as Scunthorpe in the Internet filtering game. Still - Scunthorpe is more famous, if only because of the ill-fated proposal to change the name to Sconthorpe for Internet use. Talk about get a life!
0
 
smeggheadCommented:
Then they'd have the trouble with whether to pronounce it Scone-Thorpe or Scon-Thorpe

Anyway... :-)
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now