System.__DTString.GetRepeatCount C# (CSharp) Method

GetRepeatCount() private method

private GetRepeatCount ( ) : int
return int
        internal int GetRepeatCount() {
            char repeatChar = Value[Index];
            int pos = Index + 1;
            while ((pos < len) && (Value[pos] == repeatChar)) {
                pos++;
            }
            int repeatCount = (pos - Index);
            // Update the Index to the end of the repeated characters.
            // So the following GetNext() opeartion will get
            // the next character to be parsed.
            Index = pos - 1;
            return (repeatCount);
        }

Usage Example

		private static bool ParseByFormat(ref __DTString str, ref __DTString format, ref ParsingInfo parseInfo, DateTimeFormatInfo dtfi, ref DateTimeResult result)
		{
			int num = 0;
			int newValue = 0;
			int newValue2 = 0;
			int newValue3 = 0;
			int newValue4 = 0;
			int newValue5 = 0;
			int newValue6 = 0;
			int newValue7 = 0;
			double num2 = 0.0;
			DateTimeParse.TM tM = DateTimeParse.TM.AM;
			char @char = format.GetChar();
			char c = @char;
			if (c <= 'H')
			{
				if (c <= '\'')
				{
					if (c != '"')
					{
						switch (c)
						{
							case '%':
							{
								if (format.Index >= format.Value.Length - 1 || format.Value[format.Index + 1] == '%')
								{
									result.SetFailure(ParseFailureKind.Format, "Format_BadFormatSpecifier", null);
									return false;
								}
								return true;
							}
							case '&':
							{
								goto IL_991;
							}
							case '\'':
							{
								break;
							}
							default:
							{
								goto IL_991;
							}
						}
					}
					StringBuilder stringBuilder = new StringBuilder();
					if (!DateTimeParse.TryParseQuoteString(format.Value, format.Index, stringBuilder, out num))
					{
						result.SetFailure(ParseFailureKind.FormatWithParameter, "Format_BadQuote", @char);
						return false;
					}
					format.Index += num - 1;
					string text = stringBuilder.ToString();
					for (int i = 0; i < text.Length; i++)
					{
						if (text[i] == ' ' && parseInfo.fAllowInnerWhite)
						{
							str.SkipWhiteSpaces();
						}
						else
						{
							if (!str.Match(text[i]))
							{
								result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
								return false;
							}
						}
					}
					if ((result.flags & ParseFlags.CaptureOffset) == (ParseFlags)0)
					{
						return true;
					}
					if ((result.flags & ParseFlags.Rfc1123Pattern) != (ParseFlags)0 && text == "GMT")
					{
						result.flags |= ParseFlags.TimeZoneUsed;
						result.timeZoneOffset = TimeSpan.Zero;
						return true;
					}
					if ((result.flags & ParseFlags.UtcSortPattern) != (ParseFlags)0 && text == "Z")
					{
						result.flags |= ParseFlags.TimeZoneUsed;
						result.timeZoneOffset = TimeSpan.Zero;
						return true;
					}
					return true;
				}
				else
				{
					switch (c)
					{
						case '.':
						{
							if (str.Match(@char))
							{
								return true;
							}
							if (format.GetNext() && format.Match('F'))
							{
								format.GetRepeatCount();
								return true;
							}
							result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
							return false;
						}
						case '/':
						{
							if (!str.Match(dtfi.DateSeparator))
							{
								result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
								return false;
							}
							return true;
						}
						default:
						{
							if (c != ':')
							{
								switch (c)
								{
									case 'F':
									{
										break;
									}
									case 'G':
									{
										goto IL_991;
									}
									case 'H':
									{
										num = format.GetRepeatCount();
										if (!DateTimeParse.ParseDigits(ref str, (num < 2) ? 1 : 2, out newValue5))
										{
											result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
											return false;
										}
										if (!DateTimeParse.CheckNewValue(ref result.Hour, newValue5, @char, ref result))
										{
											return false;
										}
										return true;
									}
									default:
									{
										goto IL_991;
									}
								}
							}
							else
							{
								if (!str.Match(dtfi.TimeSeparator))
								{
									result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
									return false;
								}
								return true;
							}
							break;
						}
					}
				}
			}
			else
			{
				if (c <= 'h')
				{
					switch (c)
					{
						case 'K':
						{
							if (str.Match('Z'))
							{
								if ((result.flags & ParseFlags.TimeZoneUsed) != (ParseFlags)0 && result.timeZoneOffset != TimeSpan.Zero)
								{
									result.SetFailure(ParseFailureKind.FormatWithParameter, "Format_RepeatDateTimePattern", 'K');
									return false;
								}
								result.flags |= ParseFlags.TimeZoneUsed;
								result.timeZoneOffset = new TimeSpan(0L);
								result.flags |= ParseFlags.TimeZoneUtc;
								return true;
							}
							else
							{
								if (!str.Match('+') && !str.Match('-'))
								{
									return true;
								}
								str.Index--;
								TimeSpan timeSpan = new TimeSpan(0L);
								if (!DateTimeParse.ParseTimeZoneOffset(ref str, 3, ref timeSpan))
								{
									result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
									return false;
								}
								if ((result.flags & ParseFlags.TimeZoneUsed) != (ParseFlags)0 && timeSpan != result.timeZoneOffset)
								{
									result.SetFailure(ParseFailureKind.FormatWithParameter, "Format_RepeatDateTimePattern", 'K');
									return false;
								}
								result.timeZoneOffset = timeSpan;
								result.flags |= ParseFlags.TimeZoneUsed;
								return true;
							}
							break;
						}
						case 'L':
						{
							goto IL_991;
						}
						case 'M':
						{
							num = format.GetRepeatCount();
							if (num <= 2)
							{
								if (!DateTimeParse.ParseDigits(ref str, num, out newValue2) && (!parseInfo.fCustomNumberParser || !parseInfo.parseNumberDelegate(ref str, num, out newValue2)))
								{
									result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
									return false;
								}
							}
							else
							{
								if (num == 3)
								{
									if (!DateTimeParse.MatchAbbreviatedMonthName(ref str, dtfi, ref newValue2))
									{
										result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
										return false;
									}
								}
								else
								{
									if (!DateTimeParse.MatchMonthName(ref str, dtfi, ref newValue2))
									{
										result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
										return false;
									}
								}
								result.flags |= ParseFlags.ParsedMonthName;
							}
							if (!DateTimeParse.CheckNewValue(ref result.Month, newValue2, @char, ref result))
							{
								return false;
							}
							return true;
						}
						default:
						{
							switch (c)
							{
								case 'Z':
								{
									if ((result.flags & ParseFlags.TimeZoneUsed) != (ParseFlags)0 && result.timeZoneOffset != TimeSpan.Zero)
									{
										result.SetFailure(ParseFailureKind.FormatWithParameter, "Format_RepeatDateTimePattern", 'Z');
										return false;
									}
									result.flags |= ParseFlags.TimeZoneUsed;
									result.timeZoneOffset = new TimeSpan(0L);
									result.flags |= ParseFlags.TimeZoneUtc;
									str.Index++;
									if (!DateTimeParse.GetTimeZoneName(ref str))
									{
										result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
										return false;
									}
									str.Index--;
									return true;
								}
								case '[':
								{
									goto IL_991;
								}
								case '\\':
								{
									if (!format.GetNext())
									{
										result.SetFailure(ParseFailureKind.Format, "Format_BadFormatSpecifier", null);
										return false;
									}
									if (!str.Match(format.GetChar()))
									{
										result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
										return false;
									}
									return true;
								}
								default:
								{
									switch (c)
									{
										case 'd':
										{
											num = format.GetRepeatCount();
											if (num <= 2)
											{
												if (!DateTimeParse.ParseDigits(ref str, num, out newValue3) && (!parseInfo.fCustomNumberParser || !parseInfo.parseNumberDelegate(ref str, num, out newValue3)))
												{
													result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
													return false;
												}
												if (!DateTimeParse.CheckNewValue(ref result.Day, newValue3, @char, ref result))
												{
													return false;
												}
												return true;
											}
											else
											{
												if (num == 3)
												{
													if (!DateTimeParse.MatchAbbreviatedDayName(ref str, dtfi, ref newValue4))
													{
														result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
														return false;
													}
												}
												else
												{
													if (!DateTimeParse.MatchDayName(ref str, dtfi, ref newValue4))
													{
														result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
														return false;
													}
												}
												if (!DateTimeParse.CheckNewValue(ref parseInfo.dayOfWeek, newValue4, @char, ref result))
												{
													return false;
												}
												return true;
											}
											break;
										}
										case 'e':
										{
											goto IL_991;
										}
										case 'f':
										{
											break;
										}
										case 'g':
										{
											num = format.GetRepeatCount();
											if (!DateTimeParse.MatchEraName(ref str, dtfi, ref result.era))
											{
												result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
												return false;
											}
											return true;
										}
										case 'h':
										{
											parseInfo.fUseHour12 = true;
											num = format.GetRepeatCount();
											if (!DateTimeParse.ParseDigits(ref str, (num < 2) ? 1 : 2, out newValue5))
											{
												result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
												return false;
											}
											if (!DateTimeParse.CheckNewValue(ref result.Hour, newValue5, @char, ref result))
											{
												return false;
											}
											return true;
										}
										default:
										{
											goto IL_991;
										}
									}
									break;
								}
							}
							break;
						}
					}
				}
				else
				{
					if (c != 'm')
					{
						switch (c)
						{
							case 's':
							{
								num = format.GetRepeatCount();
								if (!DateTimeParse.ParseDigits(ref str, (num < 2) ? 1 : 2, out newValue7))
								{
									result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
									return false;
								}
								if (!DateTimeParse.CheckNewValue(ref result.Second, newValue7, @char, ref result))
								{
									return false;
								}
								return true;
							}
							case 't':
							{
								num = format.GetRepeatCount();
								if (num == 1)
								{
									if (!DateTimeParse.MatchAbbreviatedTimeMark(ref str, dtfi, ref tM))
									{
										result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
										return false;
									}
								}
								else
								{
									if (!DateTimeParse.MatchTimeMark(ref str, dtfi, ref tM))
									{
										result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
										return false;
									}
								}
								if (parseInfo.timeMark == DateTimeParse.TM.NotSet)
								{
									parseInfo.timeMark = tM;
									return true;
								}
								if (parseInfo.timeMark != tM)
								{
									result.SetFailure(ParseFailureKind.FormatWithParameter, "Format_RepeatDateTimePattern", @char);
									return false;
								}
								return true;
							}
							default:
							{
								switch (c)
								{
									case 'y':
									{
										num = format.GetRepeatCount();
										bool flag;
										if (dtfi.HasForceTwoDigitYears)
										{
											flag = DateTimeParse.ParseDigits(ref str, 1, 4, out newValue);
										}
										else
										{
											if (num <= 2)
											{
												parseInfo.fUseTwoDigitYear = true;
											}
											flag = DateTimeParse.ParseDigits(ref str, num, out newValue);
										}
										if (!flag && parseInfo.fCustomNumberParser)
										{
											flag = parseInfo.parseNumberDelegate(ref str, num, out newValue);
										}
										if (!flag)
										{
											result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
											return false;
										}
										if (!DateTimeParse.CheckNewValue(ref result.Year, newValue, @char, ref result))
										{
											return false;
										}
										return true;
									}
									case 'z':
									{
										num = format.GetRepeatCount();
										TimeSpan timeSpan2 = new TimeSpan(0L);
										if (!DateTimeParse.ParseTimeZoneOffset(ref str, num, ref timeSpan2))
										{
											result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
											return false;
										}
										if ((result.flags & ParseFlags.TimeZoneUsed) != (ParseFlags)0 && timeSpan2 != result.timeZoneOffset)
										{
											result.SetFailure(ParseFailureKind.FormatWithParameter, "Format_RepeatDateTimePattern", 'z');
											return false;
										}
										result.timeZoneOffset = timeSpan2;
										result.flags |= ParseFlags.TimeZoneUsed;
										return true;
									}
									default:
									{
										goto IL_991;
									}
								}
								break;
							}
						}
					}
					else
					{
						num = format.GetRepeatCount();
						if (!DateTimeParse.ParseDigits(ref str, (num < 2) ? 1 : 2, out newValue6))
						{
							result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
							return false;
						}
						if (!DateTimeParse.CheckNewValue(ref result.Minute, newValue6, @char, ref result))
						{
							return false;
						}
						return true;
					}
				}
			}
			num = format.GetRepeatCount();
			if (num > 7)
			{
				result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
				return false;
			}
			if (!DateTimeParse.ParseFractionExact(ref str, num, ref num2) && @char == 'f')
			{
				result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
				return false;
			}
			if (result.fraction < 0.0)
			{
				result.fraction = num2;
				return true;
			}
			if (num2 != result.fraction)
			{
				result.SetFailure(ParseFailureKind.FormatWithParameter, "Format_RepeatDateTimePattern", @char);
				return false;
			}
			return true;
			IL_991:
			if (@char == ' ')
			{
				if (!parseInfo.fAllowInnerWhite && !str.Match(@char))
				{
					if (parseInfo.fAllowTrailingWhite && format.GetNext() && DateTimeParse.ParseByFormat(ref str, ref format, ref parseInfo, dtfi, ref result))
					{
						return true;
					}
					result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
					return false;
				}
			}
			else
			{
				if (format.MatchSpecifiedWord("GMT"))
				{
					format.Index += "GMT".Length - 1;
					result.flags |= ParseFlags.TimeZoneUsed;
					result.timeZoneOffset = TimeSpan.Zero;
					if (!str.Match("GMT"))
					{
						result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
						return false;
					}
				}
				else
				{
					if (!str.Match(@char))
					{
						result.SetFailure(ParseFailureKind.Format, "Format_BadDateTime", null);
						return false;
					}
				}
			}
			return true;
		}
All Usage Examples Of System.__DTString::GetRepeatCount