/// <summary> /// Determines if a string contains only characters from the chosen /// ValidCharacterSet. Additional valid characters may be passed in the chars /// argument. /// </summary> /// <param name="data"> /// String to validate. /// </param> /// <param name="charSet"> /// Combination of ValidCharacterSet values. /// </param> /// <param name="chars"> /// Additional allowable characters not included in the chosen character set. /// </param> /// <returns> /// Returns true if all the characters were valid, otherwise false. /// </returns> public static bool ValidateCharacterSet(string data, ValidCharacterSet charSet, params char[] chars) { if ((charSet & ValidCharacterSet.All) == ValidCharacterSet.All) { return(true); } if (data == null) { return((ValidCharacterSet.Null & charSet) == ValidCharacterSet.Null); } if ((charSet & ValidCharacterSet.Any) == ValidCharacterSet.Any) { return(true); } string resultSet = GetCharacterSet(charSet, chars); foreach (char c in data) { if (resultSet.IndexOf(c) == -1) { return(false); } } return(true); }
/// <summary> /// Gets the human readable names of the character sets defined in the <c>charSet</c> /// parameter. /// </summary> /// <param name="charSet"> /// Combination of ValidCharacterSet values. /// </param> /// <param name="chars"> /// Additional characters to include in the final name. /// </param> /// <returns> /// Returns a comma separated list of character sets. /// </returns> public static string GetCharacterSetNames(ValidCharacterSet charSet, char[] chars) { StringBuilder resultSet = new StringBuilder(); foreach (ValidCharacterSet val in Enum.GetValues(typeof(ValidCharacterSet))) { if (((val & charSet) == val) && ((val & ValidCharacterSet.mark_Combo) != ValidCharacterSet.mark_Combo) && (val != ValidCharacterSet.None && val != ValidCharacterSet.mark_SingleCharacter)) { if (resultSet.Length > 0) { resultSet.Append(", "); } resultSet.Append(Enum.GetName(typeof(ValidCharacterSet), val).ToLower()); if ((val & ValidCharacterSet.mark_SingleCharacter) == ValidCharacterSet.mark_SingleCharacter) { resultSet.AppendFormat(" '{0}'", GetCharacterSet(val, null)); } } } if (chars != null && chars.Length > 0) { if (resultSet.Length > 0) { resultSet.Append(", "); } resultSet.AppendFormat("'{0}'", new string( chars )); } if (resultSet.ToString().IndexOf(',') > -1) { resultSet.Insert(resultSet.ToString().LastIndexOf(',') + 1, " and"); } return(resultSet.ToString()); }
/// <summary> /// Gets the string of valid characters as defined by the combination of /// values in the <c>charSet</c> parameter. /// </summary> /// <param name="charSet"> /// Combination of ValidCharacterSet values. /// </param> /// <param name="chars"> /// Additional characters to treat as valid. /// </param> /// <returns> /// Returns a combined string containing all the characters to /// consider valid. /// </returns> public static string GetCharacterSet(ValidCharacterSet charSet, char[] chars) { StringBuilder resultSet = new StringBuilder(new string( chars )); foreach (ValidCharacterSet val in Enum.GetValues(typeof(ValidCharacterSet))) { if (((val & charSet) == val) && ((val & ValidCharacterSet.mark_Combo) != ValidCharacterSet.mark_Combo) && val != ValidCharacterSet.mark_SingleCharacter) { switch (val) { case ValidCharacterSet.Uppercase: resultSet.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); break; case ValidCharacterSet.Lowercase: resultSet.Append("abcdefghijklmnopqrstuvwxyz"); break; case ValidCharacterSet.Numeric: resultSet.Append("1234567890"); break; case ValidCharacterSet.Hyphen: resultSet.Append('-'); break; case ValidCharacterSet.Underscore: resultSet.Append('_'); break; case ValidCharacterSet.Tab: resultSet.Append('\t'); break; case ValidCharacterSet.Space: resultSet.Append(' '); break; case ValidCharacterSet.CarriageReturn: resultSet.Append('\r'); break; case ValidCharacterSet.LineFeed: resultSet.Append('\n'); break; case ValidCharacterSet.Period: resultSet.Append('.'); break; case ValidCharacterSet.At: resultSet.Append('@'); break; case ValidCharacterSet.Punctuation: resultSet.Append("!@#$%^&*<>()[]{}|\\/:;,.\"'-_=+~`"); break; case ValidCharacterSet.SafePunctuation: resultSet.Append("_-."); break; case ValidCharacterSet.Currency: resultSet.Append(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator); resultSet.Append(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyGroupSeparator); resultSet.Append(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol); break; } } } return(resultSet.ToString()); }
/// <summary> /// Determines if a string contains only characters from the chosen /// ValidCharacterSet. Additional valid characters may be passed in the chars /// argument. /// </summary> /// <param name="data"> /// String to validate. /// </param> /// <param name="charSet"> /// One or more of the ValidCharacterSet values. /// </param> /// <returns></returns> public static bool ValidateCharacterSet(string data, ValidCharacterSet charSet) { return(ValidateCharacterSet(data, charSet, (char[])null)); }
/// <summary> /// Determines if a string contains only characters from the chosen /// ValidCharacterSet. Additional valid characters may be passed in the chars /// argument. /// </summary> /// <param name="data"> /// String to validate. /// </param> /// <param name="charSet"> /// One or more of the ValidCharacterSet values. /// </param> /// <param name="chars"> /// String of additional allowable characters not included in the /// chosen character set. /// </param> /// <returns></returns> public static bool ValidateCharacterSet(string data, ValidCharacterSet charSet, string chars) { return(ValidateCharacterSet(data, charSet, chars.ToCharArray())); }