private bool TryParseCore( NumParseData npData) { bool retVal = true; if (npData.Char == '-') { string str = npData.ArgStr.Substring(npData.StartIdx, npData.Idx - npData.StartIdx); npData.StartIdx = npData.Idx; int val; if (int.TryParse(str, out val)) { npData.Values.Add(val); } else { retVal = false; } } else if (!(char.IsWhiteSpace(npData.Char) || char.IsLetterOrDigit(npData.Char))) { retVal = false; } return(retVal); }
private bool TryParseCore(DateTimeParseData data) { var npData = new NumParseData { ArgStr = data.ArgStr, StartIdx = data.Idx, Idx = data.Idx, Char = data.ArgStr[data.Idx], Values = new List <int>() }; while (data.Idx < data.Len && !char.IsLetter(npData.Char) && data.IsValid) { npData.Char = data.ArgStr[data.Idx]; data.IsValid = TryParseCore(npData); npData.Idx++; } data.Idx = npData.Idx; data.Nums = npData.Values.ToArray(); data.IsValid = data.IsValid && data.Nums.Any(); return(data.IsValid); }