Бесплатные снипеты на заказ

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
C#:
HtmlElement he = null;
for (int i = 0; i<30; i++)
{
    var tab = instance.ActiveTab;
    tab.Navigate(project.Variables["url"].Value, project.Variables["refferel"].Value);
    if (tab.IsBusy) tab.WaitDownloading();
//    he = tab.FindElementByAttribute("select","name","locationId","text",0);// прописать свои параметры поиска элемента
    he = tab.FindElementByXPath("//a[contains(text(), 'Поиск защищён технологией Protect')]", 0);
   
    if (!he.IsNull)
    {
            return "OK";
    }
    Thread.Sleep(5000);
}
return null;
Спасибо.
 

discus

Client
Регистрация
21.09.2020
Сообщения
87
Благодарностей
44
Баллы
18
Надо из списка 2:
1
2
3
4
5
6
сделать список 3:
1:2
3:4
5:6
Данный код оставляет список 3 пустым, при сохранении в переменную тоже пусто. Number=2. Делал такое на кубиках - обработка долгая получается. Кто поможет исправить ошибки в этом коде?
C#:
var list = project.Lists["2"]; // Исходный список
            Random rand = new Random();
            StringBuilder strb = new StringBuilder();
                // j - количество строк, которое нужно взять.
            int j = int.Parse(project.Variables["Number"].Value);
            for (int i = 0; i < j; i++)
            {
                int r = rand.Next(list.Count);
                if (i + 1 == j)
                {
                    strb.Append(list[r]);
                }
                else
                {
                    strb.Append(list[r] + @":"); // Разделитель
                }
          
                list.RemoveAt(r);
            }
            return String.Join(Environment.NewLine, project.Lists["3"]);
 

Paul_1771

Client
Регистрация
04.01.2021
Сообщения
5
Благодарностей
2
Баллы
3
Всем доброго времени суток! Подскажите, а можно ли сделать скрин инстанса, зная id ?
 

Арман

Client
Регистрация
04.07.2019
Сообщения
137
Благодарностей
32
Баллы
28
Добрый день подскажите
Сохранить профиль папку c# коде
 

Вложения

  • 2,6 КБ Просмотры: 13
  • 8,4 КБ Просмотры: 12

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
198
Баллы
43

Арман

Client
Регистрация
04.07.2019
Сообщения
137
Благодарностей
32
Баллы
28
Добрый день спасибо но то что вы скинули я так понимаю это старый способ работы с профилем в документации есть метод работы с профилем в старом виде вот ссылка на документацию https://help.zennolab.com/en/v7/zennoposter/7.1.4/webframe.html#topic1409.html
работа с новым типом профиля именно сохранить профиль папку по словам администрации цитирую

Возможность сохранения из C# обсуждается программистами.
Возможно, это будет внедрено в будущих версиях, но сейчас - нет.
По срокам тоже сложно сориентировать.
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
118
Баллы
43
Надо из списка 2:
1
2
3
4
5
6
сделать список 3:
1:2
3:4
5:6
Данный код оставляет список 3 пустым, при сохранении в переменную тоже пусто. Number=2. Делал такое на кубиках - обработка долгая получается. Кто поможет исправить ошибки в этом коде?
C#:
var list = project.Lists["2"]; // Исходный список
            Random rand = new Random();
            StringBuilder strb = new StringBuilder();
                // j - количество строк, которое нужно взять.
            int j = int.Parse(project.Variables["Number"].Value);
            for (int i = 0; i < j; i++)
            {
                int r = rand.Next(list.Count);
                if (i + 1 == j)
                {
                    strb.Append(list[r]);
                }
                else
                {
                    strb.Append(list[r] + @":"); // Разделитель
                }
         
                list.RemoveAt(r);
            }
            return String.Join(Environment.NewLine, project.Lists["3"]);

C#:
        var list1 = new List<string>();
            var list2 = new List<int>();
            var list3 = new List<string>();
            for (int i = 0; i< 1000; i++)
              {
                list2.Add(i);
              }
            foreach (int l2 in list2)
            {
                if (l2 % 2 == 0)
                {
                    list1.Add(l2.ToString());
                    Console.WriteLine("Left: " + l2);
                }
                else
                {
                    list3.Add(l2.ToString());
                    Console.WriteLine("Right: " + l2);
                }
            }
 
  • Спасибо
Реакции: discus

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
У меня есть список

AA
BB
CC

Я хочу добавить <xxx> в каждую строку

Так получается:

AA <xxx>
BB <xxx>
CC <xxx>

Вы бы помогли?
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
118
Баллы
43
У меня есть список

AA
BB
CC

Я хочу добавить <xxx> в каждую строку

Так получается:

AA <xxx>
BB <xxx>
CC <xxx>

Вы бы помогли?
C#:
string result = "";
var list1 = new List<strings>() { "AA", "BB", "CC" };
foreach(string merge in list1)
{
     result+= merge+" <xxx>";
}
return result;
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
У меня есть список

AA
BB
CC

Я хочу добавить <xxx> в каждую строку

Так получается:

AA <xxx>
BB <xxx>
CC <xxx>

Вы бы помогли?
C#:
var list = project.Lists["ИМЯ_СПИСКА"];
for (int i = 0; i < list.Count; i++)
{
    list[i] += " <xxx>";
}
 
  • Спасибо
Реакции: zmike

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
Спасибо, отлично работает.
 

Вложения

Pechkin

Client
Регистрация
07.06.2011
Сообщения
97
Благодарностей
12
Баллы
8
Здравствуйте!

Большая просьба помочь восстановить бесплатный шаблон инста первонах и улучшить его.


Задача минимум - по имеющимся данным (логин комментатора), определить на странице с комментарием, равный ему по счёту номер совпадения куда поставить лайк.

Благодарю!
 

Вложения

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
Могу я задать новый запрос?

У меня есть переменная:
{-Variable.content-}

Внутри этой переменной содержится много абзацев содержимого, однако я хочу заменить много слов.

Пример:

Замените все Apple на A
Заменить все Dog на B
Замените всю воду на W

В данный момент я использую
Обработка текста> Действие Repalce

Когда есть множественная замена, мне нужно создать несколько действий. Есть ли способ создать код С # для записи всех команд замены в одном фрагменте?

Переменная обработки: {-Variable.content-}
После обработки переменной с заменами сохраните ее обратно в {-Variable.content-}

Заранее спасибо!
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 784
Благодарностей
1 452
Баллы
113
Могу я задать новый запрос?

У меня есть переменная:
{-Variable.content-}

Внутри этой переменной содержится много абзацев содержимого, однако я хочу заменить много слов.

Пример:

Замените все Apple на A
Заменить все Dog на B
Замените всю воду на W

В данный момент я использую
Обработка текста> Действие Repalce

Когда есть множественная замена, мне нужно создать несколько действий. Есть ли способ создать код С # для записи всех команд замены в одном фрагменте?

Переменная обработки: {-Variable.content-}
После обработки переменной с заменами сохраните ее обратно в {-Variable.content-}

Заранее спасибо!
C#:
string str = project.Variables["content"].Value.Replace("Apple", "A")
                                               .Replace("Dog", "B")
                                               .Replace("воду", "W");
project.Variables["content"].Value = str;
 
  • Спасибо
Реакции: sidor800 и zmike

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
Большое спасибо за умный код!
Раньше у меня было много действий, теперь для работы нужен только 1 C #!

Если я выполняю замену кода регулярного выражения, могу ли я просто сделать следующее?

C#:
string str = project.Variables["content"].Value.Replace("Apple", "A", "Regex")
                                               .Replace("Dog", "B", "Regex")
                                               .Replace("воду", "W", "Regex");
project.Variables["content"].Value = str;
 

Вложения

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 784
Благодарностей
1 452
Баллы
113
Если я выполняю замену кода регулярного выражения, могу ли я просто сделать следующее?
C#:
string str = project.Variables["content"].Value;
str = Regex.Replace(str, "Apple", "A");
str = Regex.Replace(str, "Dog", "B");
str = Regex.Replace(str, "воду", "W");
project.Variables["content"].Value = str;
 
  • Спасибо
Реакции: zmike

Markoonij

Client
Регистрация
13.10.2020
Сообщения
70
Благодарностей
3
Баллы
8
Привет
Возможно ли сделать снипет для раскрытия всех спойлеров на странице: https://www.unibet.eu/betting/sports/event/1006478884

76369

Сейчас проект реализован таким образом, что все спойлеры прокликиваются в цикле. Но это занимает много времени. Хотелось бы ускорить этот процесс.
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Все равно в цикле открывать придется. Можно разве что засунуть его в сниппет, чтобы быстрее было. Хотя, может и 7 секунд тоже много.. В общем, чем мог, помог)
C#:
project.SendInfoToLog("Старт");
System.Diagnostics.Stopwatch stopwacth = System.Diagnostics.Stopwatch.StartNew();
int i = 0;
foreach(var t in instance.ActiveTab.FindElementsByXPath(@"//*[@id=""react-tabs-1""]/div[starts-with(@class,'KambiBC-betoffer-categories-view')]/ul[@class='KambiBC-list-view__column']/li[@class='KambiBC-bet-offer-category']/div/header")){
    t.Click();
    i++;
}
foreach(var t in instance.ActiveTab.FindElementsByXPath(@"//*[@id=""react-tabs-1""]/div[starts-with(@class,'KambiBC-betoffer-categories-view')]/ul[@class='KambiBC-list-view__column']/li[starts-with(@class,'KambiBC-bet-offer-category')]/div/div/ul[@class='KambiBC-bet-offer-category__subcategories']/li[starts-with(@class,'KambiBC-bet-offer-subcategory')]/div[@class='KambiBC-bet-offer-subcategory__container']/div[@class='KambiBC-bet-offer-subcategory__header']/button[@class='KambiBC-outcomes-list__toggler-toggle-button']")){
    t.Click();
    i++;
}
project.SendInfoToLog("Открыто спойлеров: " + i + " за " + stopwacth.Elapsed.Seconds.ToString() + " секунд");
76370
C#:
foreach(var t in instance.ActiveTab.FindElementsByXPath(@"//*[@id=""react-tabs-1""]/div[starts-with(@class,'KambiBC-betoffer-categories-view')]/ul[@class='KambiBC-list-view__column']/li[@class='KambiBC-bet-offer-category']/div/header"))
    t.Click();
foreach(var t in instance.ActiveTab.FindElementsByXPath(@"//*[@id=""react-tabs-1""]/div[starts-with(@class,'KambiBC-betoffer-categories-view')]/ul[@class='KambiBC-list-view__column']/li[starts-with(@class,'KambiBC-bet-offer-category')]/div/div/ul[@class='KambiBC-bet-offer-category__subcategories']/li[starts-with(@class,'KambiBC-bet-offer-subcategory')]/div[@class='KambiBC-bet-offer-subcategory__container']/div[@class='KambiBC-bet-offer-subcategory__header']/button[@class='KambiBC-outcomes-list__toggler-toggle-button']"))
    t.Click();
 
  • Спасибо
Реакции: Markoonij

TeslaCo

Client
Регистрация
25.10.2016
Сообщения
62
Благодарностей
2
Баллы
8
Добрый день, подскажите как сделать следующее
нужно найти слово _SKU_ в первых 12 строчках таблицы (это сделал)
в той колонке в которой есть это слово
в последующих строках после него добавить в начало каждой ячейки: robots|

Начал делать но не смог довести до ума. Заранее благодарен за любую помощь.


C#:
// получаем таблицу, в которой будем искать
var sourceTable=project.Tables["startTable"];

lock(SyncObjects.TableSyncer)
{
        // i - это номер строки
        // j - это номер колонки
        // ищем в каждой строчке в таблице
        for(int i=0; i < sourceTable.RowCount; i++)
        {
            // до этой строчки ищём заголовки
            if (i == 12)
            break;
            // читаем строку из таблицы (это будет массив ячеек)
            var cells = sourceTable.GetRow(i).ToArray();
            // пройдем в цикле по всем ячейкам
            for(int j=0; j < sourceTable.ColCount; j++)
            {
                  
                if(cells[j].Contains("_SKU_"))
                {
                    sourceTable.SetCell(j,i,cells[j].  ---?

                }
            }
                      
        }
}
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
C#:
var sourceTable = project.Tables["startTable"];
lock(SyncObjects.TableSyncer){
    for(int i = 0; i < sourceTable.RowCount; i++){
        List<string> temp = new List<string>(sourceTable.GetRow(i).ToList());
        int k = temp.IndexOf("_SKU_");
        if(k > -1){
            for(int j = k++; j < temp.Count; j++){
                sourceTable.SetCell(j, i, string.Format(@"robots|{0}",temp[j]));
            }
        }
        if(i == 11)
            break;
    }
}
 
  • Спасибо
Реакции: TeslaCo

TeslaCo

Client
Регистрация
25.10.2016
Сообщения
62
Благодарностей
2
Баллы
8
C#:
var sourceTable = project.Tables["startTable"];
lock(SyncObjects.TableSyncer){
    for(int i = 0; i < sourceTable.RowCount; i++){
        List<string> temp = new List<string>(sourceTable.GetRow(i).ToList());
        int k = temp.IndexOf("_SKU_");
        if(k > -1){
            for(int j = k++; j < temp.Count; j++){
                sourceTable.SetCell(j, i, string.Format(@"robots|{0}",temp[j]));
            }
        }
        if(i == 11)
            break;
    }
}

Не совсем так, возможно я не правильно объяснил, по вашему коду получается вот так:
77070

А нужно вот так:
77071
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Да, так намного понятнее
C#:
var sourceTable = project.Tables["startTable"];
int k = sourceTable.GetRow(0).ToList().IndexOf("_SKU_");// получаем индекс нужного столбца
if(k < 0)
    throw new Exception("Столбца не найдено");
lock(SyncObjects.TableSyncer){
    for(int i = 1; i < sourceTable.RowCount; i++){
        sourceTable.SetCell(k, i, string.Format(@"robots|{0}", sourceTable.GetCell(k, i)));
    if(i == 12)
        break;
    }
}
 
  • Спасибо
Реакции: TeslaCo

TeslaCo

Client
Регистрация
25.10.2016
Сообщения
62
Благодарностей
2
Баллы
8
Заранее прошу прощение за глупые вопросы и наглость, а как сделать реплейс во всех ячейках колонки которая найдена по заголовку, после этого заголовка?
то есть тоже самое только реплейс?RUBнаEUR

77077

и ещё вопрос, после поиска нужной колонки по искомому слову, нужно удалить все строки ДО этого искомого слова (не включительно), при условии если ячейка именно в этой колонке пустая?
77078


Очень благодарен за прошлые ответы, и за этот заранее.
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Парни помогите, пожалуйста, сниппет переделать, суть сниппета такова, должен брать по регулярке, например в списке 10 строк, под регулярку подходит 2 строка, 5 строка и 8 строка, вот он берет сначала 2 строку и в конец ее, потом берет 5 строку и потом 8 строку
C#:
lock(Locker.Ссылки)
{

IZennoList list = project.Lists["Ссылки"];
list.Bind(@project.Variables["A_file"].Value);
//Данный код берет прокси из списка proxyes.txt с ротацией. (берет первую строку и возвращает в конец)

string proxy_full = String.Empty;

lock(Locker.Ссылки)
{
    proxy_full = project.Lists["Ссылки"].GetItem("0", true);
  project.Lists["Ссылки"].Add(proxy_full);
}

project.Variables["dom"].Value = proxy_full;   
}
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Заранее прошу прощение за глупые вопросы и наглость, а как сделать реплейс во всех ячейках колонки которая найдена по заголовку, после этого заголовка?
то есть тоже самое только реплейс?RUBнаEUR


и ещё вопрос, после поиска нужной колонки по искомому слову, нужно удалить все строки ДО этого искомого слова (не включительно), при условии если ячейка именно в этой колонке пустая?


Очень благодарен за прошлые ответы, и за этот заранее.
1
C#:
var sourceTable = project.Tables["startTable"];
int k = sourceTable.GetRow(0).ToList().IndexOf("_EAN_");// получаем индекс нужного столбца
if(k < 0)
    throw new Exception("Столбца не найдено");
lock(SyncObjects.TableSyncer){
    for(int i = 1; i < sourceTable.RowCount; i++){
        sourceTable.SetCell(k, i, sourceTable.GetCell(k, i).Replace("RUB", "EUR"));
    }
}
2.
C#:
var sourceTable = project.Tables["startTable"];
lock(SyncObjects.TableSyncer){
    int k = 0;
    while(k < 0){
        k = sourceTable.GetRow(0).ToList().IndexOf("_EAN_");// получаем индекс нужного столбца
        sourceTable.DeleteRow(0);//удалим строки до строки с нашими заголовками
    }
    for(int i = 1; i < sourceTable.RowCount; i++){
        sourceTable.SetCell(k, i, sourceTable.GetCell(k, i).Replace("RUB", "EUR"));
    }
}
Парни помогите, пожалуйста, сниппет переделать, суть сниппета такова, должен брать по регулярке, например в списке 10 строк, под регулярку подходит 2 строка, 5 строка и 8 строка, вот он берет сначала 2 строку и в конец ее, потом берет 5 строку и потом 8 строку
C#:
lock(Locker.Ссылки)
{

IZennoList list = project.Lists["Ссылки"];
list.Bind(@project.Variables["A_file"].Value);
//Данный код берет прокси из списка proxyes.txt с ротацией. (берет первую строку и возвращает в конец)

string proxy_full = String.Empty;

lock(Locker.Ссылки)
{
    proxy_full = project.Lists["Ссылки"].GetItem("0", true);
  project.Lists["Ссылки"].Add(proxy_full);
}

project.Variables["dom"].Value = proxy_full;  
}
C#:
string pattern = @"";//сюда регулярку
IZennoList list = project.Lists["Ссылки"];
list.Bind(@project.Variables["A_file"].Value);
lock(Locker.Ссылки){
    List<string> temp = new List<string>(list.Where(x => Regex.Match(x, pattern).Success));
    list = list.Except(temp).ToList();
    list.AddRange(temp);
}
 
  • Спасибо
Реакции: TeslaCo и Roman48

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
1
C#:
var sourceTable = project.Tables["startTable"];
int k = sourceTable.GetRow(0).ToList().IndexOf("_EAN_");// получаем индекс нужного столбца
if(k < 0)
    throw new Exception("Столбца не найдено");
lock(SyncObjects.TableSyncer){
    for(int i = 1; i < sourceTable.RowCount; i++){
        sourceTable.SetCell(k, i, sourceTable.GetCell(k, i).Replace("RUB", "EUR"));
    }
}
2.
C#:
var sourceTable = project.Tables["startTable"];
lock(SyncObjects.TableSyncer){
    int k = 0;
    while(k < 0){
        k = sourceTable.GetRow(0).ToList().IndexOf("_EAN_");// получаем индекс нужного столбца
        sourceTable.DeleteRow(0);//удалим строки до строки с нашими заголовками
    }
    for(int i = 1; i < sourceTable.RowCount; i++){
        sourceTable.SetCell(k, i, sourceTable.GetCell(k, i).Replace("RUB", "EUR"));
    }
}
C#:
string pattern = @"";//сюда регулярку
IZennoList list = project.Lists["Ссылки"];
list.Bind(@project.Variables["A_file"].Value);
lock(Locker.Ссылки){
    List<string> temp = new List<string>(list.Where(x => Regex.Match(x, pattern).Success));
    list = list.Except(temp).ToList();
    list.AddRange(temp);
}
Не работает
Ошибка в действии "CS0266" "Cannot implicitly convert type 'System.Collections.Generic.List<string>' to 'ZennoLab.InterfacesLibrary.ProjectModel.IZennoList'. An explicit conversion exists (are you missing a cast?)". [Строка: 6; Cтолбец: 12]
 

TeslaCo

Client
Регистрация
25.10.2016
Сообщения
62
Благодарностей
2
Баллы
8
2.
C#:
var sourceTable = project.Tables["startTable"];
lock(SyncObjects.TableSyncer){
    int k = 0;
    while(k < 0){
        k = sourceTable.GetRow(0).ToList().IndexOf("_EAN_");// получаем индекс нужного столбца
        sourceTable.DeleteRow(0);//удалим строки до строки с нашими заголовками
    }
    for(int i = 1; i < sourceTable.RowCount; i++){
        sourceTable.SetCell(k, i, sourceTable.GetCell(k, i).Replace("RUB", "EUR"));
    }
}

Почему-то пишет что успешно, но ничего не удаляется.
А прошлые все кубики завершаются ошибкой:
Выполнение действия CSharp OwnCode: Определение колонок и переименование. [Строка: 18; Cтолбец: 16] Индекс находился вне границ массива.
Выполнение действия CSharp OwnCode: Добавление название прайса в колонке ID. [Строка: 3; Cтолбец: 4] Столбца не найдено


77086
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Почему-то пишет что успешно, но ничего не удаляется.
А прошлые все кубики завершаются ошибкой:
Выполнение действия CSharp OwnCode: Определение колонок и переименование. [Строка: 18; Cтолбец: 16] Индекс находился вне границ массива.
Выполнение действия CSharp OwnCode: Добавление название прайса в колонке ID. [Строка: 3; Cтолбец: 4] Столбца не найдено


C#:
Dictionary<string, string> titleReplaces = new Dictionary<string, string>();
titleReplaces.Add("ID","_SKU_");
titleReplaces.Add("Артикул","_MODEL_");
titleReplaces.Add("Название","_NAME_");
titleReplaces.Add("Бренд","_MANUFACTURER");
titleReplaces.Add("Цена","_PRICE_");
titleReplaces.Add("Наличие, шт","_QUANTITY_");
titleReplaces.Add("Валюта","_EAN_");

lock(SyncObjects.TableSyncer)
{
    var sourceTable = project.Tables["startTable"];
    while(!titleReplaces.Keys.ToList().Any(sourceTable.GetRow(0).ToList().Contains)){
        if(sourceTable.RowCount == 0){
            throw new Exception("Таблица пустая");
        }
        sourceTable.DeleteRow(0);
    }
    foreach(string str in titleReplaces.Keys.ToArray()){
        int col = sourceTable.GetRow(0).ToList().IndexOf(str);
        sourceTable.SetCell(col, 0, sourceTable.GetCell(col, 0).Replace(str, titleReplaces.Single(x=>x.Key.Equals(str)).Value));
    }
    int k = sourceTable.GetRow(0).ToList().IndexOf("_SKU_");
    if(k > -1){
        for(int i = 1; i < sourceTable.RowCount; i++){
            sourceTable.SetCell(k, i, "robots|" + sourceTable.GetCell(k, i));
        }
    }
    k = sourceTable.GetRow(0).ToList().IndexOf("_EAN_");
    if(k > -1){
        for(int i = 1; i < sourceTable.RowCount; i++){
            sourceTable.SetCell(k, i, sourceTable.GetCell(k, i).Replace("RUB", "EUR"));
        }
    }
}
Не работает
Ошибка в действии "CS0266" "Cannot implicitly convert type 'System.Collections.Generic.List<string>' to 'ZennoLab.InterfacesLibrary.ProjectModel.IZennoList'. An explicit conversion exists (are you missing a cast?)". [Строка: 6; Cтолбец: 12]
C#:
string pattern = @"w.*";// сюда регулярку
lock(SyncObject){
    var list = File.ReadAllLines(project.Variables["A_file"].Value).ToList();
    var temp = new List<string>(list.Where(x => Regex.Match(x, pattern).Success));
    list = list.Except(temp).ToList();
    list.AddRange(temp);// перемещение списка подходящих строк в конец списка
    File.WriteAllLines(project.Variables["A_file"].Value, list.ToList());// запись в файл
    project.Variables["dom"].Value = string.Join(Environment.NewLine, temp); // в переменной будет список строк, удовлетворяющий регулярке
}
 
  • Спасибо
Реакции: Roman48

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
C#:
Dictionary<string, string> titleReplaces = new Dictionary<string, string>();
titleReplaces.Add("ID","_SKU_");
titleReplaces.Add("Артикул","_MODEL_");
titleReplaces.Add("Название","_NAME_");
titleReplaces.Add("Бренд","_MANUFACTURER");
titleReplaces.Add("Цена","_PRICE_");
titleReplaces.Add("Наличие, шт","_QUANTITY_");
titleReplaces.Add("Валюта","_EAN_");

lock(SyncObjects.TableSyncer)
{
    var sourceTable = project.Tables["startTable"];
    while(!titleReplaces.Keys.ToList().Any(sourceTable.GetRow(0).ToList().Contains)){
        if(sourceTable.RowCount == 0){
            throw new Exception("Таблица пустая");
        }
        sourceTable.DeleteRow(0);
    }
    foreach(string str in titleReplaces.Keys.ToArray()){
        int col = sourceTable.GetRow(0).ToList().IndexOf(str);
        sourceTable.SetCell(col, 0, sourceTable.GetCell(col, 0).Replace(str, titleReplaces.Single(x=>x.Key.Equals(str)).Value));
    }
    int k = sourceTable.GetRow(0).ToList().IndexOf("_SKU_");
    if(k > -1){
        for(int i = 1; i < sourceTable.RowCount; i++){
            sourceTable.SetCell(k, i, "robots|" + sourceTable.GetCell(k, i));
        }
    }
    k = sourceTable.GetRow(0).ToList().IndexOf("_EAN_");
    if(k > -1){
        for(int i = 1; i < sourceTable.RowCount; i++){
            sourceTable.SetCell(k, i, sourceTable.GetCell(k, i).Replace("RUB", "EUR"));
        }
    }
}

C#:
string pattern = @"w.*";// сюда регулярку
lock(SyncObject){
    var list = File.ReadAllLines(project.Variables["A_file"].Value).ToList();
    var temp = new List<string>(list.Where(x => Regex.Match(x, pattern).Success));
    list = list.Except(temp).ToList();
    list.AddRange(temp);// перемещение списка подходящих строк в конец списка
    File.WriteAllLines(project.Variables["A_file"].Value, list.ToList());// запись в файл
    project.Variables["dom"].Value = string.Join(Environment.NewLine, temp); // в переменной будет список строк, удовлетворяющий регулярке
}
Не то, тут все берутся строки, надо одну строку в переменную, самую первую, которая подходит по регулярке.
Сниппет все равно пригодиться

должен брать по регулярке, например в списке 10 строк, под регулярку подходит 2 строка, 5 строка и 8 строка, вот он берет сначала 2 строку и в конец ее, потом берет 5 строку и потом 8 строку
C#:
lock(Locker.Ссылки)
{

IZennoList list = project.Lists["Ссылки"];
list.Bind(@project.Variables["A_file"].Value);
//Данный код берет прокси из списка proxyes.txt с ротацией. (берет первую строку и возвращает в конец)

string proxy_full = String.Empty;

lock(Locker.Ссылки)
{
    proxy_full = project.Lists["Ссылки"].GetItem("0", true);
  project.Lists["Ссылки"].Add(proxy_full);
}

project.Variables["dom"].Value = proxy_full; 
}
 

Markoonij

Client
Регистрация
13.10.2020
Сообщения
70
Благодарностей
3
Баллы
8
В переменной dom_ids лежит DOM страницы.
Нужно из этой переменной xpath'ем выдернуть значение и положить в переменную sport.
Подскажите, как это можно реализовать.
 

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