public static bool TryParse()

in csharp/src/Containers/UUID.cs [476:528]


		public static bool TryParse(string str, int offset, UUIDParseFormat format, out UUID output)
		{
			output = Empty;
			if (str == null)
				return false;
			if (str.Length < offset + 32)
				return false;
			if (format == UUIDParseFormat.Any)
				format = str[offset + 8] == '-' ? UUIDParseFormat.AnyCase : UUIDParseFormat.AnyCaseWithoutDashes;

			switch (format)
			{
				case UUIDParseFormat.LowerCase:
				case UUIDParseFormat.UpperCase:
				case UUIDParseFormat.AnyCase:
					{
						if (!CanExtract(str, offset, 8, 0L, format)) return false;
						ulong m = Extract(str, offset, 8, 0L, format);
						if (str[offset + 8] != '-')
							return false;
						if (!CanExtract(str, offset + 9, 4, m, format)) return false;
						m = Extract(str, offset + 9, 4, m, format);
						if (str[offset + 13] != '-')
							return false;
						if (!CanExtract(str, offset + 14, 4, m, format)) return false;
						m = Extract(str, offset + 14, 4, m, format);
						if (str[offset + 18] != '-')
							return false;
						if (!CanExtract(str, offset + 19, 4, 0L, format)) return false;
						ulong l = Extract(str, offset + 19, 4, 0L, format);
						if (str[offset + 23] != '-')
							return false;
						if (!CanExtract(str, offset + 24, 12, l, format)) return false;
						l = Extract(str, offset + 24, 12, l, format);

						output.MSB = m;
						output.LSB = l;
						break;
					}
				case UUIDParseFormat.LowerCaseWithoutDashes:
				case UUIDParseFormat.UpperCaseWithoutDashes:
				case UUIDParseFormat.AnyCaseWithoutDashes:
					if ((!CanExtract(str, offset, 16, 0L, format)) || (!CanExtract(str, offset + 16, 16, 0L, format)))
					{
						return false;
					}
					output.MSB = Extract(str, offset, 16, 0L, format);
					output.LSB = Extract(str, offset + 16, 16, 0L, format);
					break;
			}

			return true;
		}