private static Boolean TryParse(ReadOnlySpan <char> s, NumberStyles style, NumberFormatInfo info, out Single result) { bool success = Number.TryParseSingle(s, style, info, out result); if (!success) { ReadOnlySpan <char> sTrim = s.Trim(); if (sTrim.EqualsOrdinal(info.PositiveInfinitySymbol)) { result = PositiveInfinity; } else if (sTrim.EqualsOrdinal(info.NegativeInfinitySymbol)) { result = NegativeInfinity; } else if (sTrim.EqualsOrdinal(info.NaNSymbol)) { result = NaN; } else { return(false); // We really failed } } return(true); }
internal unsafe static double ParseDouble(ReadOnlySpan <char> value, NumberStyles options, NumberFormatInfo numfmt) { NumberBuffer number = default; double d = 0; if (!TryStringToNumber(value, options, ref number, numfmt, false)) { //If we failed TryStringToNumber, it may be from one of our special strings. //Check the three with which we're concerned and rethrow if it's not one of //those strings. ReadOnlySpan <char> sTrim = value.Trim(); if (sTrim.EqualsOrdinal(numfmt.PositiveInfinitySymbol)) { return(double.PositiveInfinity); } if (sTrim.EqualsOrdinal(numfmt.NegativeInfinitySymbol)) { return(double.NegativeInfinity); } if (sTrim.EqualsOrdinal(numfmt.NaNSymbol)) { return(double.NaN); } throw new FormatException(SR.Format_InvalidString); } if (!NumberBufferToDouble(ref number, ref d)) { throw new OverflowException(SR.Overflow_Double); } return(d); }
private static bool TryParse(ReadOnlySpan <char> s, NumberStyles style, NumberFormatInfo info, out double result) { bool success = Number.TryParseDouble(s, style, info, out result); if (!success) { ReadOnlySpan <char> sTrim = s.Trim(); if (StringSpanHelpers.Equals(sTrim, info.PositiveInfinitySymbol)) { result = PositiveInfinity; } else if (StringSpanHelpers.Equals(sTrim, info.NegativeInfinitySymbol)) { result = NegativeInfinity; } else if (StringSpanHelpers.Equals(sTrim, info.NaNSymbol)) { result = NaN; } else { return(false); // We really failed } } return(true); }
public static bool TryParseExact( ReadOnlySpan <char> input, ReadOnlySpan <char> format, out Guid result) { if (format.Length != 1) { result = new Guid(); return(false); } input = input.Trim(); Guid.GuidResult result1 = new Guid.GuidResult(Guid.GuidParseThrowStyle.None); bool flag = false; switch ((char)((uint)format[0] | 32U)) { case 'b': flag = Guid.TryParseExactB(input, ref result1); break; case 'd': flag = Guid.TryParseExactD(input, ref result1); break; case 'n': flag = Guid.TryParseExactN(input, ref result1); break; case 'p': flag = Guid.TryParseExactP(input, ref result1); break; case 'x': flag = Guid.TryParseExactX(input, ref result1); break; } if (flag) { result = result1._parsedGuid; return(true); } result = new Guid(); return(false); }
private static bool TryParseGuid(ReadOnlySpan <char> guidString, ref Guid.GuidResult result) { guidString = guidString.Trim(); if (guidString.Length == 0) { result.SetFailure(false, "Format_GuidUnrecognized"); return(false); } switch (guidString[0]) { case '(': return(Guid.TryParseExactP(guidString, ref result)); case '{': return(!guidString.Contains <char>('-') ? Guid.TryParseExactX(guidString, ref result) : Guid.TryParseExactB(guidString, ref result)); default: return(!guidString.Contains <char>('-') ? Guid.TryParseExactN(guidString, ref result) : Guid.TryParseExactD(guidString, ref result)); } }
public static Guid ParseExact(ReadOnlySpan <char> input, ReadOnlySpan <char> format) { if (format.Length != 1) { throw new FormatException(SR.Format_InvalidGuidFormatSpecification); } input = input.Trim(); Guid.GuidResult result = new Guid.GuidResult(Guid.GuidParseThrowStyle.AllButOverflow); bool flag; switch ((char)((uint)format[0] | 32U)) { case 'b': flag = Guid.TryParseExactB(input, ref result); break; case 'd': flag = Guid.TryParseExactD(input, ref result); break; case 'n': flag = Guid.TryParseExactN(input, ref result); break; case 'p': flag = Guid.TryParseExactP(input, ref result); break; case 'x': flag = Guid.TryParseExactX(input, ref result); break; default: throw new FormatException(SR.Format_InvalidGuidFormatSpecification); } return(result._parsedGuid); }