Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Беру строку из таблицы, при этом обязательно, чтобы эта строка содержала "текст1" и точно не содержала "текст2", пока работает так: берем строку, которая содержит "текст1", затем проверяю все 20 ячеек на содержание "текст2" и если он там есть(а это нам не нужно), то заново берем следующую случайную строку. Начал смотреть в сторону регулярок, но пока не сообразил как их можно использовать в данном случае и можно ли вообще. Может кто подскажет где копать?
На скорую руку, просто проверь, запусти в кубике c#, по играй со значениями:
C#:
string s1 = "The quick brown fox jumps over the lazy dog"; // Исходная строка
string s2 = "fox"; // Строка, которая должна входить
string s3 = "1"; // Строка, котороя не должна входить
bool b = s1.Contains(s2);
bool c = s1.Contains(s3);
if (b && !c) {
return "Условие выполнено, сохраняем результат";
} else {
return "Условие не выполнено, пропускаем";
}
Строку из таблицы записываешь в переменную, кубиком, текст1 и текст2 в отдельные переменные, после этого выполняешь этот c# код, подставив свои названия переменных, на выходе получаешь результат. Это все зацикливаешь так же кубиками, пока не закончатся строки в таблице.
C#:
string s1 = project.Variables["название переменной, строка из таблицы"].Value; // Строка из таблицы
string s2 = project.Variables["название переменной, текст1"].Value; // Строка, которая должна входить
string s3 = project.Variables["название переменной, текст2"].Value; // Строка, котороя не должна входить
bool b = s1.Contains(s2);
bool c = s1.Contains(s3);
if (b && !c) {
project.Variables["название переменной, в которую сохранить результат"].Value = project.Variables["название переменной, строка из таблицы"].Value;
} else {
return "Условие не выполнено, пропускаем";
}
Если на кубиках стандартных, то вот два варианта, почти равноценных.
Приложил шаблон также. В первом кубике (точка старта) задается регулярное выражение для поиска, для каждого из вариантов оно чуть-чуть разное.
На скорую руку, просто проверь, запусти в кубике c#, по играй со значениями:
C#:
string s1 = "The quick brown fox jumps over the lazy dog"; // Исходная строка
string s2 = "fox"; // Строка, которая должна входить
string s3 = "1"; // Строка, котороя не должна входить
bool b = s1.Contains(s2);
bool c = s1.Contains(s3);
if (b && !c) {
return "Условие выполнено, сохраняем результат";
} else {
return "Условие не выполнено, пропускаем";
}
Строку из таблицы записываешь в переменную, кубиком, текст1 и текст2 в отдельные переменные, после этого выполняешь этот c# код, подставив свои названия переменных, на выходе получаешь результат. Это все зацикливаешь так же кубиками, пока не закончатся строки в таблице.
C#:
string s1 = project.Variables["название переменной, строка из таблицы"].Value; // Строка из таблицы
string s2 = project.Variables["название переменной, текст1"].Value; // Строка, которая должна входить
string s3 = project.Variables["название переменной, текст2"].Value; // Строка, котороя не должна входить
bool b = s1.Contains(s2);
bool c = s1.Contains(s3);
if (b && !c) {
project.Variables["название переменной, в которую сохранить результат"].Value = project.Variables["название переменной, строка из таблицы"].Value;
} else {
return "Условие не выполнено, пропускаем";
}
Всю душу вложил в понимание, но так и не удалось запустить удачно
Прикрепил как примерно выглядит моя таблица(только гораздо больше как вниз так и вбок)
А получить пытаюсь номер строки, которая содержит "bbbb" и не содержит "eeee". Чтобы потом значения каждого из столбцов данной строки, я мог добавить в переменные, которых порядка 10
По вашему коду не понял как добавить ["название переменной, строка из таблицы"], так как всю строку в переменную добавить нельзя насколько я знаю. Такая же проблема и с ["название переменной, в которую сохранить результат"], так как значений в таблице много, не совсем понял, что это должна быть за переменная.
Очень извиняюсь, если туплю, но очень хочу разобраться
Если на кубиках стандартных, то вот два варианта, почти равноценных.
Приложил шаблон также. В первом кубике (точка старта) задается регулярное выражение, для каждого из вариантов оно чуть-чуть разное.
Примерно так у меня в данный момент это и работает, но возможно ваш вариант будет работать быстрее. У меня большой объём данных в таблице и идёт долгий поиск
1) Создаем новый список, который будет хранить номера строк, соответствующих условию задачи (в коде это "Список 1");
2) Заменяем названия переменных, которые содержат слово для посика и стоп слово, а так же название таблицы на свои;
3) Запускаем кубик.
Результатом будут id строк, которые соответствуют условию, все это будет находится в списке, который создали.
Дальше уже получаем номер строки таблицы из списка, и работаем конкретно с этой строкой используя кубики, например.
C#:
var table = project.Tables["Таблица 1"]; // Таблица с данными для обработки
var sourceList = project.Lists["Список 1"]; // Список для найденных номеров строк
// Переменная, содержащее слово, которое обязательно должно присутствовать в строке
string good_word = project.Variables["good_word"].Value;
// Переменная, содержащее слово, которое не должно присутствовать в строке
string bad_word = project.Variables["bad_word"].Value;
// Строка
string row;
// good_word и bad_word
bool gw,bw;
//sourceList.Clear(); // очистили список, перед выполнением, для теста
// Проходим по всей таблице и ищем номера строк, которые соответствуют условию задачи
for (int i = 0; i < table.RowCount; i++) {
row = string.Join(" ", table.GetRow(i));
gw = row.Contains(good_word);
bw = row.Contains(bad_word);
if (gw && !bw) {
sourceList.Add(i.ToString());
}
}
На сколько быстро будет работать данный вариант, не знаю, но надеюсь это поможет.
А получить пытаюсь номер строки, которая содержит "bbbb" и не содержит "eeee". Чтобы потом значения каждого из столбцов данной строки, я мог добавить в переменные, которых порядка 10
Спасибо большое, сильно упростили мне жизнь. Можно ещё напоследок спросить, чтобы до конца разобраться в работе регулярок, есть ли возможность добавить сюда ещё одно значение в "обязательное содержимое", например, чтобы одновременно искало строку содержащую bbbb и сссс, но не содержащую eeee
1) Создаем новый список, который будет хранить номера строк, соответствующих условию задачи (в коде это "Список 1");
2) Заменяем названия переменных, которые содержат слово для посика и стоп слово, а так же название таблицы на свои;
3) Запускаем кубик.
Результатом будут id строк, которые соответствуют условию, все это будет находится в списке, который создали.
Дальше уже получаем номер строки таблицы из списка, и работаем конкретно с этой строкой используя кубики, например.
C#:
var table = project.Tables["Таблица 1"]; // Таблица с данными для обработки
var sourceList = project.Lists["Список 1"]; // Список для найденных номеров строк
// Переменная, содержащее слово, которое обязательно должно присутствовать в строке
string good_word = project.Variables["good_word"].Value;
// Переменная, содержащее слово, которое не должно присутствовать в строке
string bad_word = project.Variables["bad_word"].Value;
// Строка
string row;
// good_word и bad_word
bool gw,bw;
//sourceList.Clear(); // очистили список, перед выполнением, для теста
// Проходим по всей таблице и ищем номера строк, которые соответствуют условию задачи
for (int i = 0; i < table.RowCount; i++) {
row = string.Join(" ", table.GetRow(i));
gw = row.Contains(good_word);
bw = row.Contains(bad_word);
if (gw && !bw) {
sourceList.Add(i.ToString());
}
}
На сколько быстро будет работать данный вариант, не знаю, но надеюсь это поможет.