using System; using System.Collections.Generic; using System.Linq; namespace BizHawk.Common { public static class StringExtensions { public static bool IsBinary(this string str) { return str.All(c => c == '0' || c == '1'); } public static string GetPrecedingString(this string str, string value) { int index = str.IndexOf(value); if (index < 0) { return null; } else if (index == 0) { return String.Empty; } else { return str.Substring(0, index); } } public static bool IsValidRomExtentsion(this string str, params string[] romExtensions) { var strUpper = str.ToUpper(); return romExtensions.Any(ext => strUpper.EndsWith(ext.ToUpper())); } public static bool In(this string str, params string[] options) { return options.Any(opt => opt.Equals(str, StringComparison.CurrentCultureIgnoreCase)); } public static bool In(this string str, IEnumerable options) { return options.Any(opt => opt.Equals(str, StringComparison.CurrentCultureIgnoreCase)); } public static bool In(this string str, IEnumerable options, Func eval) { return options.Any(opt => eval(opt, str)); } public static bool NotIn(this string str, params string[] options) { return options.All(opt => opt.ToLower() != str.ToLower()); } public static bool NotIn(this string str, IEnumerable options) { return options.All(opt => opt.ToLower() != str.ToLower()); } } }