AcTools.Utils.Helpers.StringExtension.DiapasonContains C# (CSharp) 메소드

DiapasonContains() 개인적인 메소드

private DiapasonContains ( [ s, double value, bool roundSingle = true ) : bool
s [
value double
roundSingle bool
리턴 bool
        public static bool DiapasonContains([NotNull] this string s, double value, bool roundSingle = true) {
            if (s == null) throw new ArgumentNullException(nameof(s));

            return s.Split(',', ';').Select(x => x.Trim()).Any(part => {
                var n = part.IndexOf('-');
                if (n == 0) {
                    var m = part.IndexOf('-', n + 1);
                    if (m != -1 && m != 1) {
                        n = m;
                    }
                }

                double fromValue, toValue;
                if (n > 0 && n < part.Length - 1) { // "x-y"
                    if (FlexibleParser.TryParseDouble(part.Substring(0, n), out fromValue) &&
                            FlexibleParser.TryParseDouble(part.Substring(n + 1), out toValue)) {
                        return value >= fromValue && value <= toValue;
                    }
                } else if (n < 0) { // "x"
                    if (FlexibleParser.TryParseDouble(part, out fromValue)) {
                        return roundSingle ? value.RoughlyEquals(fromValue) : Equals(fromValue, value);
                    }
                } else if (part.Length == 1) { // "-"
                    return true;
                } else if (n == part.Length - 1) { // "x-"
                    if (FlexibleParser.TryParseDouble(part.Substring(0, n), out fromValue)) {
                        return value >= fromValue;
                    }
                } else { // "-x"
                    if (FlexibleParser.TryParseDouble(part.Substring(n + 1), out toValue)) {
                        return value <= toValue;
                    }
                }

                return false;
            });
        }