public static string Sanitize(this string value, SanitizeConfig config) { return(Sanitize(value, null, config)); }
private static string AppendSeparator(string input, SanitizeConfig config) { var result = new StringBuilder(); var alreadyAppnded = false; foreach (var @char in input) { if (char.IsUpper(@char)) { if (!alreadyAppnded) { result.AppendFormat(string.Concat(config.Separator, char.ToLower(@char))); alreadyAppnded = true; } else { result.Append(char.ToLower(@char)); } } else { result.Append(@char); alreadyAppnded = false; } } return(result.ToString()); }
public static string Sanitize(this string value, IDictionary <string, string> replacements, SanitizeConfig config) { return(ToSanitizedValue(value, replacements, config)); }
public static string Sanitize(this Enum value, IDictionary <string, string> replacements, SanitizeConfig config) { return(ToSanitizedValue(value.ToStringOrEmpty(), replacements, config)); }
private static string ToSanitizedValue(this string value, ICollection <KeyValuePair <string, string> > replacements, SanitizeConfig config) { if (string.IsNullOrEmpty(value)) { return(string.Empty); } value = AppendSeparator(value, config); if (config.UseLowerCase) { value = value.ToLower(); } if (replacements != null && replacements.Count > 0) { value = replacements.Aggregate(value, (current, replacement) => current.ReplaceAll(replacement.Key, replacement.Value)); } value = Regex.Replace(value, @"&\w+;", string.Empty); if (config.RemoveNonWesternCharacters) { value = Regex.Replace(value, @"[^a-z0-9\-\u0600-\u06FF\s]", config.Separator); } else { value = Regex.Replace(value, @"[^a-z0-9\-\s]", config.Separator); } if (!string.IsNullOrEmpty(config.Separator)) { if (config.Separator != " ") { value = Regex.Replace(value, " ", config.Separator); } if (config.TrimMultipleSeparators) { value = Regex.Replace(value, string.Concat(config.Separator, "{2,}"), config.Separator); } var separatorArray = config.Separator.ToCharArray(); value = value.TrimStart(separatorArray); value = value.TrimEnd(separatorArray); } return(value); }
public static string Sanitize(this Enum value, SanitizeConfig config) { return(Sanitize(value.ToStringOrEmpty(), config)); }
static Sanitizer() { _config = SanitizeConfig.Current; }