Beispiel #1
0
        /// <summary>
        /// Attempts to parse a string slice into a bool.
        /// </summary>
        static public bool TryParseBool(StringSlice inSlice, out bool outBool)
        {
            inSlice = inSlice.Trim();

            if (inSlice.Length == 0)
            {
                outBool = false;
                return(false);
            }

            if (inSlice.Equals("true", true))
            {
                outBool = true;
                return(true);
            }

            if (inSlice.Equals("false", true))
            {
                outBool = false;
                return(true);
            }

            outBool = false;
            return(false);
        }
Beispiel #2
0
        /// <summary>
        /// Attempts to parse a string slice into a float.
        /// </summary>
        static public bool TryParseFloat(StringSlice inSlice, out float outFloat)
        {
            inSlice = inSlice.Trim();

            if (inSlice.Length == 0)
            {
                outFloat = 0;
                return(false);
            }

            if (inSlice.Equals("Infinity"))
            {
                outFloat = float.PositiveInfinity;
                return(true);
            }

            if (inSlice.Equals("-Infinity"))
            {
                outFloat = float.NegativeInfinity;
                return(true);
            }

            if (inSlice.Equals("NaN"))
            {
                outFloat = float.NaN;
                return(true);
            }

            int evalMode = EvaluateFloatMode(inSlice);

            if (evalMode == DoNotRead)
            {
                outFloat = 0;
                return(false);
            }
            else if (evalMode == ReadAsInteger)
            {
                long l;
                if (TryParseLongInternal(inSlice, false, out l))
                {
                    outFloat = (float)l;
                    return(true);
                }
            }
            else if (evalMode == ReadAsDecimalPlace)
            {
                double d;
                if (TryParseLongDouble(inSlice, out d))
                {
                    outFloat = (float)d;
                    return(true);
                }
            }

            return(float.TryParse(inSlice.ToString(), NumberStyles.Float, CultureInfo.InvariantCulture, out outFloat));
        }
Beispiel #3
0
        /// <summary>
        /// Determines if a string matches the given filter.
        /// Wildcard characters are supported at the start and end of the filter.
        /// </summary>
        /// <remarks>
        /// This does not yet support wildcards in the middle of the filter.
        /// </remarks>
        static public bool WildcardMatch(StringSlice inString, string inFilter, char inWildcard = '*', bool inbIgnoreCase = false)
        {
            if (string.IsNullOrEmpty(inFilter))
            {
                return(inString.IsEmpty);
            }

            int filterLength = inFilter.Length;

            if (filterLength == 1 && inFilter[0] == inWildcard)
            {
                return(true);
            }

            if (filterLength == 2 && inFilter[0] == inWildcard && inFilter[1] == inWildcard)
            {
                return(true);
            }

            bool bStart = inFilter[0] == inWildcard;
            bool bEnd   = inFilter[filterLength - 1] == inWildcard;

            if (bStart || bEnd)
            {
                string filterStr = inFilter;
                int    startIdx  = 0;
                if (bStart)
                {
                    ++startIdx;
                    --filterLength;
                }
                if (bEnd)
                {
                    --filterLength;
                }

                filterStr = filterStr.Substring(startIdx, filterLength);
                if (bStart && bEnd)
                {
                    return(inString.Contains(filterStr, inbIgnoreCase));
                }
                if (bStart)
                {
                    return(inString.EndsWith(filterStr, inbIgnoreCase));
                }
                return(inString.StartsWith(filterStr, inbIgnoreCase));
            }

            return(inString.Equals(inFilter, inbIgnoreCase));
        }