/// <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); }
/// <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)); }
/// <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)); }