using System; using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; using ICSharpCode.SharpZipLib.Zip; namespace NzbDrone.Common { public static class StringExtensions { public static string NullSafe(this string target) { return ((object)target).NullSafe().ToString(); } public static object NullSafe(this object target) { if (target != null) return target; return "[NULL]"; } public static string FirstCharToUpper(this string input) { return input.First().ToString().ToUpper() + String.Join("", input.Skip(1)); } public static string Inject(this string format, params object[] formattingArgs) { return string.Format(format, formattingArgs); } private static readonly Regex CollapseSpace = new Regex(@"\s+", RegexOptions.Compiled); public static string Replace(this string text, int index, int length, string replacement) { text = text.Remove(index, length); text = text.Insert(index, replacement); return text; } public static string RemoveAccent(this string text) { var normalizedString = text.Normalize(NormalizationForm.FormD); var stringBuilder = new StringBuilder(); foreach (var c in normalizedString) { var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); if (unicodeCategory != UnicodeCategory.NonSpacingMark) { stringBuilder.Append(c); } } return stringBuilder.ToString().Normalize(NormalizationForm.FormC); } public static string TrimEnd(this string text, string postfix) { if (text.EndsWith(postfix)) text = text.Substring(0, text.Length - postfix.Length); return text; } public static string CleanSpaces(this string text) { return CollapseSpace.Replace(text, " ").Trim(); } public static bool IsNullOrWhiteSpace(this string text) { return String.IsNullOrWhiteSpace(text); } public static bool IsNotNullOrWhiteSpace(this string text) { return !String.IsNullOrWhiteSpace(text); } public static bool ContainsIgnoreCase(this string text, string contains) { return text.IndexOf(contains, StringComparison.InvariantCultureIgnoreCase) > -1; } public static string WrapInQuotes(this string text) { if (!text.Contains(" ")) { return text; } return "\"" + text + "\""; } } }