/// <summary> /// Разбор ответа сервера. /// </summary> /// <param name="answer"></param> /// <returns></returns> public static SearchPostingInfo[] Parse ( IEnumerable <string> answer ) { List <SearchPostingInfo> result = new List <SearchPostingInfo>(); Regex regex = new Regex(@"^(\d+)\#(\w+)\#(\d+)\#(\d+)\#(\d*)$"); foreach (string line in answer) { Match match = regex.Match(line); if (match.Success) { SearchPostingInfo item = new SearchPostingInfo { Mfn = int.Parse(match.Groups[1].Value), Tag = match.Groups[2].Value, Occurrence = int.Parse(match.Groups[2].Value), Count = int.Parse(match.Groups[3].Value), }; result.Add(item); } } return(result.ToArray()); }
/// <summary> /// Разбор ответа сервера с расформатированными записями. /// </summary> /// <param name="answer"></param> /// <returns></returns> public static SearchPostingInfo[] ParseFormatted ( IEnumerable <string> answer ) { List <SearchPostingInfo> result = new List <SearchPostingInfo>(); Regex regex = new Regex(@"^(\d+)\#(\d+)\#(\w+)\#(\d+)\#(\d+)$"); foreach (string line in answer) { string[] parts = line.Split('\x1E'); if (parts.Length != 3) { continue; } Match match = regex.Match(parts[0]); if (match.Success) { SearchPostingInfo item = new SearchPostingInfo { Mfn = int.Parse(match.Groups[2].Value), Tag = match.Groups[3].Value, Occurrence = int.Parse(match.Groups[4].Value), Count = int.Parse(match.Groups[5].Value), Text = parts[1], Formatted = parts[2] }; result.Add(item); } } return(result.ToArray()); }