/// <summary> /// Упрощает строку для задач сравнения /// </summary> /// <param name="src"></param> /// <param name="options"></param> /// <returns></returns> public static string Simplify(this string src, SimplifyOptions options = SimplifyOptions.Default) { if (string.IsNullOrEmpty(src)) { return(string.Empty); } if (SimplifyOptions.None == options) { return(src); } var result = src; if (options.HasFlag(SimplifyOptions.Trim)) { result = result.Trim(); } if (options.HasFlag(SimplifyOptions.LowerCase)) { result = result.ToLowerInvariant(); } if (options.HasFlag(SimplifyOptions.LfOnly)) { result = result.LfOnly(); } var sb = new StringBuilder(); foreach (var c in result) { if (char.IsWhiteSpace(c)) { if (c == '\r' || c == '\n') { if (!options.HasFlag(SimplifyOptions.NoNewLines)) { sb.Append(c); } else { if (c == '\n' && !options.HasFlag(SimplifyOptions.NoInlineWs)) { sb.Append(' '); } } } else { if (!options.HasFlag(SimplifyOptions.NoInlineWs)) { sb.Append(c); } } } else if (c == '_') { if (!options.HasFlag(SimplifyOptions.NoUndescores)) { sb.Append(c); } } else if (c == '-') { if (!options.HasFlag(SimplifyOptions.NoDashes)) { sb.Append(c); } } else if (c == '"' || c == '«' || c == '»') { if (options.HasFlag(SimplifyOptions.SingleQuotes)) { sb.Append('\''); } else { sb.Append(c); } } else { sb.Append(c); } } return(sb.ToString()); }
public void Simplify(string src, SimplifyOptions opts, string result) { Assert.AreEqual(result,src.Simplify(opts)); }
public void Simplify(string src, SimplifyOptions opts, string result) { Assert.AreEqual(result, src.Simplify(opts)); }