Но появилась новая проблема. Иногда скрипт во время работы внезапно запрещает выделять действия. Т.е при клике на любое действие, оно просто не выделяется красным. Это второй баг, независимый от первого если что
Проблемы с функционалом "Списков"
-
Всем привет, проблема скорее в моем не знании целиком инструментария "BAS" и то как это реализовать. Но так как я потратил поиск решения уже достаточно времени и так как есть форум решил попробовать через него решить данную проблему.
Есть список с значениями:
lorem lorem true lorem lorem
lorem. lorem false - lorem lorem
lorem = lorem, lorem, lorem
loremtruelorem lorem loremнужно из списка удалить все строки в которых есть слово (или которые встречают слово "true")
на сколько понимаю у BAS есть такая функция в списке "Удалить По Значению" - и там вводиться само значение, как я понял по точному соответствию, но проблема в том что слово "true" встречаются в не точном соответствие и может быть окружено другие словами. Тут как я понимаю нужно использовать метод "expression" и через JAVAScript как то это решать (мне так кажется) , но яву я к сожалению пока не на столько хорошо изучил.
Может есть другой способ или каким должен быть код что бы в списке удалять строку содержащую текст именно через "Удалить По Значению"?
Спасибо за понимание! -
@snifram said in Проблемы с функционалом "Списков":
Всем привет, проблема скорее в моем не знании целиком инструментария "BAS" и то как это реализовать. Но так как я потратил поиск решения уже достаточно времени и так как есть форум решил попробовать через него решить данную проблему.
Есть список с значениями:
lorem lorem true lorem lorem
lorem. lorem false - lorem lorem
lorem = lorem, lorem, lorem
loremtruelorem lorem loremнужно из списка удалить все строки в которых есть слово (или которые встречают слово "true")
на сколько понимаю у BAS есть такая функция в списке "Удалить По Значению" - и там вводиться само значение, как я понял по точному соответствию, но проблема в том что слово "true" встречаются в не точном соответствие и может быть окружено другие словами. Тут как я понимаю нужно использовать метод "expression" и через JAVAScript как то это решать (мне так кажется) , но яву я к сожалению пока не на столько хорошо изучил.
Может есть другой способ или каким должен быть код что бы в списке удалять строку содержащую текст именно через "Удалить По Значению"?
Спасибо за понимание!Используйте действие "Foreach" для перебора списка и действие "Содержит" в модуле "Строка", что бы определить содержится ли нужная строка в элементе списка или нет
-
@Fox said in Проблемы с функционалом "Списков":
@snifram said in Проблемы с функционалом "Списков":
Всем привет, проблема скорее в моем не знании целиком инструментария "BAS" и то как это реализовать. Но так как я потратил поиск решения уже достаточно времени и так как есть форум решил попробовать через него решить данную проблему.
Есть список с значениями:
lorem lorem true lorem lorem
lorem. lorem false - lorem lorem
lorem = lorem, lorem, lorem
loremtruelorem lorem loremнужно из списка удалить все строки в которых есть слово (или которые встречают слово "true")
на сколько понимаю у BAS есть такая функция в списке "Удалить По Значению" - и там вводиться само значение, как я понял по точному соответствию, но проблема в том что слово "true" встречаются в не точном соответствие и может быть окружено другие словами. Тут как я понимаю нужно использовать метод "expression" и через JAVAScript как то это решать (мне так кажется) , но яву я к сожалению пока не на столько хорошо изучил.
Может есть другой способ или каким должен быть код что бы в списке удалять строку содержащую текст именно через "Удалить По Значению"?
Спасибо за понимание!Используйте действие "Foreach" для перебора списка и действие "Содержит" в модуле "Строка", что бы определить содержится ли нужная строка в элементе списка или нет
и если содержит "true" то удаляем - спасибо
на сколько понял еще один из способов это через выполнение кода "[[URL_LIST_FINAL]] = [[URL_LIST_FINAL]].filter(function(a){return a.toLowerCase().indexOf("https://m.me") < 0 && a.toLowerCase().indexOf("skype.com") < 0 && a.toLowerCase().indexOf("twitter.com") < 0})" и тд , но как понимаю если скрипт многопоточный и список большой может положить сам BAS уже
-
@snifram said in Проблемы с функционалом "Списков":
и если содержит "true" то удаляем - спасибо
на сколько понял еще один из способов это через выполнение кода "[[URL_LIST_FINAL]] = [[URL_LIST_FINAL]].filter(function(a){return a.toLowerCase().indexOf("https://m.me") < 0 && a.toLowerCase().indexOf("skype.com") < 0 && a.toLowerCase().indexOf("twitter.com") < 0})" и тд , но как понимаю если скрипт многопоточный и список большой может положить сам BAS уже
Не положит, это буквально тоже самое, только через js
-
@Fox said in Проблемы с функционалом "Списков":
@snifram said in Проблемы с функционалом "Списков":
и если содержит "true" то удаляем - спасибо
на сколько понял еще один из способов это через выполнение кода "[[URL_LIST_FINAL]] = [[URL_LIST_FINAL]].filter(function(a){return a.toLowerCase().indexOf("https://m.me") < 0 && a.toLowerCase().indexOf("skype.com") < 0 && a.toLowerCase().indexOf("twitter.com") < 0})" и тд , но как понимаю если скрипт многопоточный и список большой может положить сам BAS уже
Не положит, это буквально тоже самое, только через js
принял, спасибо!
-
данная функция очень понравилась))) спасибо , не стал создавать новую тему решил в этой спросить
а как по аналогии сделать в обратную сторону "[[URL_LIST_FINAL]] = [[URL_LIST_FINAL]].filter(function(a){return a.toLowerCase().indexOf("https://m.me") < 0 && a.toLowerCase().indexOf("skype.com") < 0 && a.toLowerCase().indexOf("twitter.com") < 0})" - так удалит все строки в которых есть или встречаются заданные элементы
а как оставить эти строки а удалить остальные которые не встречают перечисленные элементы
Спасибо заранее -
Прошу прощения - до самого дошло что вопрос в операторах
Для реализации функционала, который оставляет только строки, содержащие хотя бы одно из указанных значений в indexOf("..."), нужно инвертировать логическое условие. Вместо проверки на отсутствие всех указанных подстрок, мы будем проверять наличие хотя бы одной из них.
Вот соответствующий код:
[[FINAL_LIST]] = [[FINAL_LIST]].filter(function(a) {
return a.toLowerCase().indexOf("background:") >= 0 ||
a.toLowerCase().indexOf("#") >= 0 ||
a.toLowerCase().indexOf("width:") >= 0 ||
a.toLowerCase().indexOf("margin-right:") >= 0 ||
a.toLowerCase().indexOf(";") >= 0 ||
a.toLowerCase().indexOf("=>") >= 0 ||
a.toLowerCase().indexOf(">") >= 0 ||
a.toLowerCase().indexOf(")") >= 0 ||
a.toLowerCase().indexOf("e.json") >= 0 ||
a.toLowerCase().indexOf("(") >= 0 ||
a.toLowerCase().indexOf("height:") >= 0 ||
a.toLowerCase().indexOf("color:") >= 0 ||
a.toLowerCase().indexOf("content:") >= 0 ||
a.toLowerCase().indexOf("gtag.js") >= 0 ||
a.toLowerCase().indexOf("cloudflare") >= 0 ||
a.toLowerCase().indexOf("cdn-cgi") >= 0;
});
Объяснение изменений:
Инверсия условия : В оригинальной функции использовались операторы < 0 для исключения строк, содержащих определенные подстроки. Здесь мы заменили их на >= 0, чтобы включить строки, содержащие эти подстроки.
Логическое "или" (||) : Для того чтобы строка проходила фильтрацию, достаточно, чтобы она содержала хотя бы одну из указанных подстрок. Поэтому используем оператор || между условиями.
Синтаксис сохранен : Структура и стиль кода полностью соответствуют вашему примеру.
Теперь этот код оставит только те строки, которые содержат хотя бы одну из указанных подстрок. Все остальные строки будут удалены.