wheeljumpr
Новичок
- Регистрация
- 10.06.2020
- Сообщения
- 2
- Благодарностей
- 0
- Баллы
- 1
Здравствуйте, Есть ли способ выбрать последнее предложение абзаца? Может ли кто-нибудь подсказать мне этот сниппет? Спасибо за любую помощь.
Здравствуйте, Есть ли способ выбрать последнее предложение абзаца? Может ли кто-нибудь подсказать мне этот сниппет? Спасибо за любую помощь.
[^.!?]+[.!?]+(?=\r\n|$)
foreach(var t in instance.ActiveTab.FindElementsByXPath(@"//button[@class='button button--stretched place-bet-button button--primary']"))
t.Click();
не используй " или если они так жизненно нужны, то экранируй их ""Подскажите, по поводу клика с помощью с#
Есть 2 вида XPATH:
1. //button[@class='button button--stretched place-bet-button button--primary']
2. //abc-accordion[@id='123']//span[@class='btn-odds__label' and text()="123"]
Делаю клик с помощью C#:
В первом варианте XPATH все работает. Во втором - нет.C#:foreach(var t in instance.ActiveTab.FindElementsByXPath(@"//button[@class='button button--stretched place-bet-button button--primary']")) t.Click();
Подскажите, что нужно подправить?
Так и думал,что дело в кавычках. Что значит "экранируй"?не используй " или если они так жизненно нужны, то экранируй их ""
Как экранировать, покажи пожалуйста?не используй " или если они так жизненно нужны, то экранируй их ""
Прошу помощи. Нужен снипет для работы с профилями.
Задача: брать в работу профиль, который работал не меньше суток назад от текущего времени. Остальные профили пропускать.
Посмотреть вложение 78030
// переменная, куда запишем путь к файлу профиля
string prof = project.Variables["profile"].Value;
// считаем все файлы из папки prof
DirectoryInfo dir = new DirectoryInfo(@"путь к директории с профилями");
//перебираем все файлы
foreach (var item in dir.GetFiles())
{
// количество минут от даты последнег изменения файла
var res = (DateTime.Now - item.LastWriteTime).TotalMinutes;
// если больше 1440 минут, берем этот файл профиля
if ( res > 1440)
{
project.Variables["profile"].Value = item.Name;
break; // выходим из цикла
}
}
Добрый день!
Прошу помочь решить такую задачу:
Есть таблица "Table" со столбцами А,B,C,D. Нужно в 3-х последних строках таблицы выяснить, есть ли в столбце "В" значение "04L", а если есть то получить значение (например 87.155.62) из столбца "С" и присвоить его переменной "table_c".
При этом, если среди последних трех строк таблицы есть несколько значений "04L" (как в примере), то из них нужно выбрать самое последнее.
IZennoTable table = project.Tables["tb"]; // таблица tb должна существовать в шаблоне
// ДЕМО данные
table.AddRow(new[]{"a0", "b0", "c0", "d0"});
table.AddRow(new[]{"a1", "b1", "c1", "d1"});
table.AddRow(new[]{"a2", "b2", "c2", "d2"});
table.AddRow(new[]{"a3", "b3_04L", "c3", "d3"});
table.AddRow(new[]{"a4", "b4", "c4", "d4"});
table.AddRow(new[]{"a5", "b5", "c5", "d5"});
int count = table.RowCount; // узнаю количество строчек в таблице
int max_count = 3; // Сколько последних значений будем просматривать
string template = "04L"; // Что будем искать
string table_c = string.Empty;
for(int i=0; i<max_count;i++) {
int item = count-i-1;
if(item >=0 ){
string[] row = table.GetRow(item).ToArray();
if(row[1].Contains(template)) {
table_c = row[2];
break; // Значение найдено
}
else{
continue; // Значение не найдено
}
}
}
project.Variables["table_c"].Value = table_c; // Сохраняем результат либо пусто (если не найдено)
project.SendInfoToLog(table_c);
var table = project.Tables["Table"];
for (int i = table.RowCount - 1; i >= table.RowCount - 3; i--)
if(table.GetCell("B", i).Contains("04L"))
project.Variables["table_c"].Value = table.GetCell("C", i);
Сжать видео без потери качества
.\ffmpeg.exe -y -i .\'7 урок'.mp4 -vcodec mpeg4 -q:v 10 -r:v 10 7урок.mp4
- Ускорить видео в 100 раз
.\ffmpeg -i input.mp4 -an -vf setpts=PTS/100 result2.mp4
Спасибо за ответ, но выдает ошибку. Прилагаю скрин:C#:var table = project.Tables["Table"]; for (int i = table.RowCount - 1; i >= table.RowCount - 3; i--) if(table.GetCell("B", i).Contains("04L")) project.Variables["table_c"].Value = table.GetCell("C", i);
Спасибо за ответ, но выдает ошибку, прилагаю скрин:Посмотреть вложение 78742
Посмотреть вложение 78743
C#:IZennoTable table = project.Tables["tb"]; // таблица tb должна существовать в шаблоне // ДЕМО данные table.AddRow(new[]{"a0", "b0", "c0", "d0"}); table.AddRow(new[]{"a1", "b1", "c1", "d1"}); table.AddRow(new[]{"a2", "b2", "c2", "d2"}); table.AddRow(new[]{"a3", "b3_04L", "c3", "d3"}); table.AddRow(new[]{"a4", "b4", "c4", "d4"}); table.AddRow(new[]{"a5", "b5", "c5", "d5"}); int count = table.RowCount; // узнаю количество строчек в таблице int max_count = 3; // Сколько последних значений будем просматривать string template = "04L"; // Что будем искать string table_c = string.Empty; for(int i=0; i<max_count;i++) { int item = count-i-1; if(item >=0 ){ string[] row = table.GetRow(item).ToArray(); if(row[1].Contains(template)) { table_c = row[2]; break; // Значение найдено } else{ continue; // Значение не найдено } } } project.Variables["table_c"].Value = table_c; // Сохраняем результат либо пусто (если не найдено) project.SendInfoToLog(table_c);
Создайте в проекте через Окно переменных переменную с именемСпасибо за ответ, но выдает ошибку, прилагаю скрин:
table_c
Вы правы. Моя невнимательность)
var table = project.Tables["Table"];
for (int i = table.RowCount - 1; i >= table.RowCount - 3; i--)
if(table.GetCell("B", i).Contains("04L"))
return table.GetCell("C", i);
var table = project.Tables["Table"];
for(int i = table.RowCount - 1; i >= table.RowCount - 3; i--)
if(table.GetCell("B", i).Contains("04L")){
project.Variables["table_c"].Value = table.GetCell("C", i);
break;
}
var A = project.Lists["A"];
var B = project.Lists["B"];
for(int i = 0; i < list.Count; i++)
foreach(string str in new[]{"iframe", "Youtube.com"})
if(B[i].Contains(str))
B[i] = A[i];
Я использую сторонний инструмент для перевода. Таким образом, нет никакого контроля над выводом перевода.А не лучше ли пересмотреть инструмент перевода, чтобы у него не возникало проблем..C#:var A = project.Lists["A"]; var B = project.Lists["B"]; for(int i = 0; i < list.Count; i++) foreach(string str in new[]{"iframe", "Youtube.com"}) if(B[i].Contains(str)) B[i] = A[i];
Я использую сторонний инструмент для перевода. Таким образом, нет никакого контроля над выводом перевода.
Я попробовал скрипт, у него следующая ошибка:
Компиляция кода ошибки в действии «CS0103» «Имя 'list' не существует в текущем контексте». [Ряд: 3; Колонка: 20]
Не могли бы вы указать, где могли ошибиться, спасибо!
var A = project.Lists["A"];
var B = project.Lists["B"];
for(int i = 0; i < B.Count; i++)//Здесь:) мы же перебираем список B
foreach(string str in new[]{"iframe", "Youtube.com"})
if(B[i].Contains(str))
B[i] = A[i];
var str = @"=C3=87=C3=A4=C3=B0=C3=A0=C3=A2=C3=B1=C3=B2=C3=A2=C3=B3=C3=A9=C3=B2=C3=A5 To=xa45 =20";
var s1 = DecodeQuotedPrintable(str, Encoding.UTF8);
var s2 = Encoding.GetEncoding("iso-8859-15").GetBytes(s1);
var s3 = Encoding.GetEncoding(1251).GetString(s2);
static string DecodeQuotedPrintable(string str, Encoding enc)
{
var result = new List<byte>();
str = str.Replace("=\r\n", "");
for(int i=0;i<str.Length;i++)
{
var c = str[i];
switch (c)
{
case '=':
var b = Convert.ToByte(str.Substring(i + 1, 2), 16);
result.Add(b);
i += 2;
break;
default:
result.Add((byte) c);
break;
}
}
return enc.GetString(result.ToArray());
}
Код может закончиться на этот раз. Однако у него появилась новая проблема. Если есть строка, соответствующая строке в списке B, то все содержимое списка A копируется в список B. Цель состоит в том, чтобы заменить только конкретную строку, содержащую эту строку.C#:var A = project.Lists["A"]; var B = project.Lists["B"]; for(int i = 0; i < B.Count; i++)//Здесь:) мы же перебираем список B foreach(string str in new[]{"iframe", "Youtube.com"}) if(B[i].Contains(str)) B[i] = A[i];
Я нашел здесь следующий кодКод может закончиться на этот раз. Однако у него появилась новая проблема. Если есть строка, соответствующая строке в списке B, то все содержимое списка A копируется в список B. Цель состоит в том, чтобы заменить только конкретную строку, содержащую эту строку.
// берем из переменной текст, который надо искать
var textContains = project.Variables["Переменная"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["Список"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
for(int i=0; i < sourceList.Count; i++)
{
// читаем строку из списка
var str = sourceList[i];
// проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
if (str.Contains(textContains))
{
//удаляем строку содержащую текст
sourceList.RemoveAt(i);
// без "i--;" обработка будет некорректной, будет пропускаться строка идущая сразу после удаляющейся строки.
i--;
}
}
}
Код Выполняет именно то, что Вы описали. Проверьте свои списки. Возможно, там на момент выполнения кода лежат не те данные, от которых Вы ждете заказанный результат.Код может закончиться на этот раз. Однако у него появилась новая проблема. Если есть строка, соответствующая строке в списке B, то все содержимое списка A копируется в список B. Цель состоит в том, чтобы заменить только конкретную строку, содержащую эту строку.
//Очищу списки
foreach(string s in new[]{"A", "B"})
project.Lists[s].Clear();
//Заполню списки тестовыми данными
var A = project.Lists["A"];
A.Add("какие-то данные_1");
A.Add("какие-то данные_2");
A.Add("какие-то данные_3");
A.Add("какие-то данные_4");
A.Add("какие-то данные_5");
var B = project.Lists["B"];
B.Add("some data_youtube");
B.Add("some data_2");
B.Add("some data_3");
B.Add("some data_4");
B.Add("some data_iframe");
//Выполню замену строк в списке B строками из списка A, если в них имеются слова из массива
for(int i = 0; i < B.Count; i++)
foreach(string str in new[]{"youtube", "iframe"})
if(B[i].Contains(str))
B[i] = A[i];
//Посмотрю, что теперь в списке B
return string.Join(Environment.NewLine, B);
Привет всем!
Нужно декодировать Quoted-Printable
Нашел код
где метод DecodeQuotedPrintable:C#:var str = @"=C3=87=C3=A4=C3=B0=C3=A0=C3=A2=C3=B1=C3=B2=C3=A2=C3=B3=C3=A9=C3=B2=C3=A5 To=xa45 =20"; var s1 = DecodeQuotedPrintable(str, Encoding.UTF8); var s2 = Encoding.GetEncoding("iso-8859-15").GetBytes(s1); var s3 = Encoding.GetEncoding(1251).GetString(s2);
Но не получается его приладить. Подскажите как им правильно воспользоваться и куда чего вставлятьC#:static string DecodeQuotedPrintable(string str, Encoding enc) { var result = new List<byte>(); str = str.Replace("=\r\n", ""); for(int i=0;i<str.Length;i++) { var c = str[i]; switch (c) { case '=': var b = Convert.ToByte(str.Substring(i + 1, 2), 16); result.Add(b); i += 2; break; default: result.Add((byte) c); break; } } return enc.GetString(result.ToArray()); }