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)); } }
/// <summary> /// Delimits all leading occurrences of a set of elements specified /// in a readonly span from the span. /// </summary> /// <param name="span">The source span from which the elements are removed.</param> /// <param name="trimElements">The span which contains the set of elements to remove.</param> private static int ClampStart <T>(ReadOnlySpan <T> span, ReadOnlySpan <T> trimElements) where T : IEquatable <T> { int start = 0; for (; start < span.Length; start++) { if (!trimElements.Contains(span[start])) { break; } } return(start); }
/// <summary> /// Delimits all trailing occurrences of a set of elements specified /// in a readonly span from the span. /// </summary> /// <param name="span">The source span from which the elements are removed.</param> /// <param name="start">The start index from which to being searching.</param> /// <param name="trimElements">The span which contains the set of elements to remove.</param> private static int ClampEnd <T>(ReadOnlySpan <T> span, int start, ReadOnlySpan <T> trimElements) where T : IEquatable <T> { // Initially, start==len==0. If ClampStart trims all, start==len Debug.Assert((uint)start <= span.Length); int end = span.Length - 1; for (; end >= start; end--) { if (!trimElements.Contains(span[end])) { break; } } return(end - start + 1); }