- Регистрация
- 03.05.2016
- Сообщения
- 773
- Благодарностей
- 517
- Баллы
- 93
Есть задача, распарсить массив данных полученный из гет ответа и получить ID пользователей, которые удовлетворяют условиям "can_write_private_message = 1 и "time" >= 1616225731
Массив данных: прикрепил файл
Написал такой код, но почему то парсинг идет не совсем корректно, у некоторых строк сохраняется только ID как и надо, а на некоторые строки почему то "Regex rxID" не срабатывает и строки записываются полностью (а нужно только ID) Скрин 1
Да и сам код не совсем нравится, подскажите как его улучшить.
Не нравится что делаю 2 перебора сначала через foreach потом через for, думаю что можно обойтись каким то одним, но навыка не хватает.
Массив данных: прикрепил файл
Написал такой код, но почему то парсинг идет не совсем корректно, у некоторых строк сохраняется только ID как и надо, а на некоторые строки почему то "Regex rxID" не срабатывает и строки записываются полностью (а нужно только ID) Скрин 1
Да и сам код не совсем нравится, подскажите как его улучшить.
Не нравится что делаю 2 перебора сначала через foreach потом через for, думаю что можно обойтись каким то одним, но навыка не хватает.
C#:
IZennoList lstID = project.Lists["Список ID"];
lstID.Clear();
string strParsing = project.Variables["test"].Value; //Массив данных
Regex rxTime = new Regex (@"(?<=""time"":).*?(?=})"); //Получаем Time
Regex rxID = new Regex ("(?<=\"id\":).*?(?=,)"); //Получаем ID
int intTime = 1616225731;
if (Regex.IsMatch(strParsing, "\\{\"first_name\".*?}"))
foreach (var strGoodID in Regex.Matches(strParsing, "\\{\"first_name\".*?}"))
if (Regex.IsMatch(strGoodID.ToString(), "(?<=\"can_write_private_message\":)1.*?(?=,)"))
lstID.Add(strGoodID.ToString());
for (int i = 0; i <= lstID.Count; i ++){
string n = lstID[0];
lstID.RemoveAt(0);
string time = rxTime.Match(n).Value;
if (String.IsNullOrEmpty(time)){
project.SendInfoToLog("Проблемная строка");
continue;
}else if (Convert.ToInt32(time) >= intTime) lstID.Add(rxID.Match(n).Value.ToString());
}
return "ok";
Вложения
-
253,3 КБ Просмотры: 3
-
229,5 КБ Просмотры: 14