using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace NzbDrone.Common.Extensions { public static class StringExtensions { private static readonly Regex CamelCaseRegex = new Regex("(? values, string separator) { return string.Join(separator, values); } 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 StartsWithIgnoreCase(this string text, string startsWith) { return text.StartsWith(startsWith, StringComparison.InvariantCultureIgnoreCase); } public static bool EndsWithIgnoreCase(this string text, string startsWith) { return text.EndsWith(startsWith, StringComparison.InvariantCultureIgnoreCase); } public static bool EqualsIgnoreCase(this string text, string equals) { return text.Equals(equals, StringComparison.InvariantCultureIgnoreCase); } 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 + "\""; } public static byte[] HexToByteArray(this string input) { return Enumerable.Range(0, input.Length) .Where(x => x%2 == 0) .Select(x => Convert.ToByte(input.Substring(x, 2), 16)) .ToArray(); } public static string ToHexString(this byte[] input) { return string.Concat(Array.ConvertAll(input, x => x.ToString("X2"))); } public static string FromOctalString(this string octalValue) { octalValue = octalValue.TrimStart('\\'); var first = int.Parse(octalValue.Substring(0, 1)); var second = int.Parse(octalValue.Substring(1, 1)); var third = int.Parse(octalValue.Substring(2, 1)); var byteResult = (byte)((first << 6) | (second << 3) | (third)); return Encoding.ASCII.GetString(new [] { byteResult }); } public static string SplitCamelCase(this string input) { return CamelCaseRegex.Replace(input, match => " " + match.Value); } public static bool ContainsIgnoreCase(this IEnumerable source, string value) { return source.Contains(value, StringComparer.InvariantCultureIgnoreCase); } } }