Помогите Переделать Сниппет

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
776
Благодарностей
518
Баллы
93
Есть сниппет:
C#:
var listID = project.Lists["ListID"];

var response = project.Variables["Response"].Value;

var list = new List<string>();
var regex = new Regex(@"\{""id"":.*?(?=""})");
regex.Matches(response).Cast<Match>().ToList().ForEach(m=>list.Add(m.Value));

for (int i = 0; i < list.Count; i++)
{
    var line = list[i];
    var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();

    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);
  
    if (string.IsNullOrEmpty(followers_count)) followers_count = "0";
    if (line.Contains("can_write_private_message\":0") || int.Parse(followers_count) > 3000 || time > 604800) continue;
  
    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();
    var name = Regex.Match(line, @"(?<=first_name"":"").*?(?="")").Value.Trim();
  
    //FileSystem.FileAppendString(project.Directory + "\\Result.txt", "id \"" + id + "\",name \"" + name + "\"", true);
  
    listID.Add("id \"" + id + "\",name \"" + name + "\"");
}
Нужно Убрать из него "var name" и сделать так чтобы сохранял в список числовые ID
Пример
(1111111
2222222
3333333
4444444)
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
776
Благодарностей
518
Баллы
93
DEL
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 099
Благодарностей
648
Баллы
113

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
776
Благодарностей
518
Баллы
93
C#:
var listID = project.Lists["ListID"];

var response = project.Variables["Response"].Value;

var list = new List<string>();
var regex = new Regex(@"\{""id"":.*?(?=""})");
regex.Matches(response).Cast<Match>().ToList().ForEach(m=>list.Add(m.Value));

for (int i = 0; i < list.Count; i++)
{
    var line = list[i];
    var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();

    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);

    if (string.IsNullOrEmpty(followers_count)) followers_count = "0";
    if (line.Contains("can_write_private_message\":0") || int.Parse(followers_count) > 3000 || time > 604800) continue;

    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();

    listID.Add("id \"" + id + "\"");
}
Как прописать правильно прописать строку "listID.Add" в таком варианте выдается ошибка
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
C#:
var listID = project.Lists["ListID"];

var response = project.Variables["Response"].Value;

var list = new List<string>();
var regex = new Regex(@"\{""id"":.*?(?=""})");
regex.Matches(response).Cast<Match>().ToList().ForEach(m=>list.Add(m.Value));

for (int i = 0; i < list.Count; i++)
{
    var line = list[i];
    var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();

    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);

    if (string.IsNullOrEmpty(followers_count)) followers_count = "0";
    if (line.Contains("can_write_private_message\":0") || int.Parse(followers_count) > 3000 || time > 604800) continue;

    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();

    listID.Add("id \"" + id + "\"");
}
Как прописать правильно прописать строку "listID.Add" в таком варианте выдается ошибка
listID.Add("id \"" + id.ToString() + "\"");
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
C#:
listID.Add(String.Format("id \"{0}\"", id));
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
776
Благодарностей
518
Баллы
93

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
В обоих вариантах выдает ошибку "Последовательность не содержит соответствующий элемент"
Значит проверяй логику кода, у тебя цикл for отрабатывает все строки, которые ты кидаешь в лист, но при этом, одна из строк не содержит какого-то regex, тебе нужно в if проверку завернуть все Regex.Match
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
776
Благодарностей
518
Баллы
93
Значит проверяй логику кода, у тебя цикл for отрабатывает все строки, которые ты кидаешь в лист, но при этом, одна из строк не содержит какого-то regex, тебе нужно в if проверку завернуть все Regex.Match
Вот я описал проблему тут https://zennolab.com/discussion/threads/krituet-snippet-pomogite-reshit-problemu-gotov-zaplatit.72302/
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Вот пример, как обернуть код, набросал в блокноте. Замени сроки в своем коде и должно быть норм.

C#:
if (line.Contains("followers_count")) var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();
else continue;

if (line.Contains("time")) {
    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);
} else continue;

if (line.Contains("id")) {
    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();
    listID.Add("id \"" + id + "\"");
} else continue;
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
776
Благодарностей
518
Баллы
93
DEL
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
776
Благодарностей
518
Баллы
93
нашел ошибку, переделал, но все равно не работает
C#:
var listID = project.Lists["Список ID"];
 
var response = project.Variables["get_otvet"].Value;
 
var list = new List<string>();
var regex = new Regex(@"\{""id"":.*?(?=""})");
regex.Matches(response).Cast<Match>().ToList().ForEach(m=>list.Add(m.Value));
 
for (int i = 0; i < list.Count; i++)
{
 if (line.Contains("followers_count")) {
    var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();
} else continue;

if (line.Contains("time")) {
    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);
} else continue;

if (line.Contains("id")) {
    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();
    listID.Add("id \"" + id + "\"");
} else continue;
 
}
Ошибка в действии "CS0103" "Имя "line" отсутствует в текущем контексте". [Строка: 20; Cтолбец: 26]
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
776
Благодарностей
518
Баллы
93
Вот пример, как обернуть код, набросал в блокноте. Замени сроки в своем коде и должно быть норм.

C#:
if (line.Contains("followers_count")) var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();
else continue;

if (line.Contains("time")) {
    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);
} else continue;

if (line.Contains("id")) {
    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();
    listID.Add("id \"" + id + "\"");
} else continue;
Ругается на все line.

48072
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
  • Спасибо
Реакции: Dmitriy Ka

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
776
Благодарностей
518
Баллы
93

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)