Helper method to Replace/Remove characters that do not match the Regular Expression

I have a few fields, that use regEx for validation. In case if provided field has unaccepted characters, I don't want to reject the whole field, as most of validators do, but just remove invalid characters.
 I am expecting to keep only Character Classes for allowed characters and created a helper method to strip unaccepted characters.
 
The allowed pattern should be in Regex format, expect them wrapped in square brackets. function will insert a tilde after opening squere bracket , according to http://stackoverflow.com/questions/4460290/replace-chars-if-not-match.
 
[^ ] at the start of a character class negates it - it matches characters not in the class.
I anticipate that it could work not for all RegEx describing valid characters sets,but it works for relatively simple sets, that we are using.
 
        /// <summary>
               /// Replaces  not expected characters.
               /// </summary>
               /// <param name="text"> The text.</param>
               /// <param name="allowedPattern"> The allowed pattern in Regex format, expect them wrapped in brackets</param>
               /// <param name="replacement"> The replacement.</param>
               /// <returns></returns>
               /// //        http://stackoverflow.com/questions/4460290/replace-chars-if-not-match.
               //[^ ] at the start of a character class negates it - it matches characters not in the class.
               //Replace/Remove characters that do not match the Regular Expression
               static public string ReplaceNotExpectedCharacters( this string text, string allowedPattern,string replacement )
              {
                     allowedPattern = allowedPattern.StripBrackets( "[", "]" );
                      //[^ ] at the start of a character class negates it - it matches characters not in the class.
                      var result = Regex .Replace(text, @"[^" + allowedPattern + "]", replacement);
                      return result;
              }

static public string RemoveNonAlphanumericCharacters( this string text)
              {
                      var result = text.ReplaceNotExpectedCharacters(NonAlphaNumericCharacters, "" );
                      return result;
              }
        public const string NonAlphaNumericCharacters = "[a-zA-Z0-9]";

There are a couple of functions from my StringHelper class  http://geekswithblogs.net/mnf/archive/2006/07/13/84942.aspx ,
 that are used here.
    //            
               /// <summary>
               /// 'StripBrackets checks that starts from sStart and ends with sEnd (case sensitive).
               ///           'If yes, than removes sStart and sEnd.
               ///           'Otherwise returns full string unchanges
               ///           'See also MidBetween
               /// </summary>
               /// <param name="str"></param>
               /// <param name="sStart"></param>
               /// <param name="sEnd"></param>
               /// <returns></returns>
               public static string StripBrackets( this string str, string sStart, string sEnd)
              {
                      if (CheckBrackets(str, sStart, sEnd))
                     {
                           str = str.Substring(sStart.Length, (str.Length - sStart.Length) - sEnd.Length);
                     }
                      return str;
              }
               public static bool CheckBrackets( string str, string sStart, string sEnd)
              {
                      bool flag1 = (str != null ) && (str.StartsWith(sStart) && str.EndsWith(sEnd));
                      return flag1;
              }

               public static string WrapBrackets( string str, string sStartBracket, string sEndBracket)
              {
                      StringBuilder builder1 = new StringBuilder(sStartBracket);
                     builder1.Append(str);
                     builder1.Append(sEndBracket);
                      return builder1.ToString();
              }v
posted @ Sunday, October 28, 2012 1:30 PM
Print

Comments on this entry:

No comments posted yet.

Your comment:



(not displayed)

 
 
 
 
 

Live Comment Preview:

 
«April»
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910