Проверка присутствия значений из списка
-
Сложилась следующая ситуация - есть задание в виде текста на странице - получаю его через взять текст, и есть список ключевых слов, например 5 - наличие которых в тексте необходимо проверить...
Сейчас это реализовано последовательной цепочкой через логику:
if[[var]].indexOf("key") >=0
if[[var]].indexOf("key1") >=0
if[[var]].indexOf("key2") >=0
и т.д.скрипт очень большой, вернее сказать высокий) - можно ли каким то образом сформировать выражение, чтобы список кеев был помещен в одно выражение, что-то типа
if[[var]].indexOf("key;key1;key2") >=0 то есть, если любое из перечисленных значений присутствует в тексте выражение считается верным@support - как правильно реализовать???
-
@Turutur said in Проверка присутствия значений из списка:
if[[var]].indexOf("key;key1;key2") >=0
Сейчас что-то похожее пытаюсь сообразить, а вместо "key;key1;key2" список из файла через ресурс как-то можно загрузить?
Примерно так
if[[var]].indexOf("{{list-key}}") >=0
Надо сформировать файл минус слов или черный список, с возможностью его дополнять.
-
if([[var]].indexOf("key") >=0 && [[var]].indexOf("key1") >=0 && [[var]].indexOf("key2") >=0)
-
@servasw45
Если есть строка с переменным числом элементов, то нужно сначала разбить ее на список, потом проверить каждый элемент
-
Спасибо за подсказку, support!
У вас наверное очепятка вкралась
Вместо Парсить Строку нужно Ресурс В Список
так заработало.
-
@support said in Проверка присутствия значений из списка:
if([[var]].indexOf("key") >=0 && [[var]].indexOf("key1") >=0 && [[var]].indexOf("key2") >=0)
не срабатывает в блоке if прописываю строчку
[[SAVED_TZ]].indexOf("Нужно") >=0 && [[SAVED_TZ]].indexOf("лендинг") >=0 && [[SAVED_TZ]].indexOf("LP") >=0
в коде она выглядит так:
_if(VAR_SAVED_TZ.indexOf("Нужно") >=0 && VAR_SAVED_TZ.indexOf("лендинг") >=0 && VAR_SAVED_TZ.indexOf("LP") >=0,function(){
section_insert()что не так?
-
@Turutur если не срабатывает, значит в VAR_SAVED_TZ нет одновременно слов "Нужно" И "лендинг" И "LP"
И именно в таком регистре букв.
Так что исходный текст в студию, а потом будет видно, почему что не срабатывает, как ожидают.
-
@out - спасибо за участие! То есть получается идет проверка на наличие именно всего текста - я думал && - означает "или" - как тогда реализовать проверку на наличие любого из слов, а не всех сразу? И второе - как задать проверку на наличие не целого слова, а например его части, и как исключить значение регистра??? Например есть ключ Одностраничник - в тексте он может быть как Одностраничник, одностраничник, одностраничника и так далее как сделать проверку по части слова "дностраничник" - возможно ли?
-
- && замени на ||
&& логическое И
|| - ИЛИ
- Проверяется и так не целое слово, а "его части". Если бы нужна была проверка именно целых слов, то поиск бы велся иначе: использовались бы регулярки \bслово\b или что-то подобное (\b значит граница слова)...
На регистронезависимого поиска, то нужно исходных текст (в котором ты ищешь) привести в нижный регистр и искомые слова писать в нижнем регистре.
Как привести содержимое переменной к нижнему регистру ? так: https://learn.javascript.ru/string#смена-регистра
- && замени на ||
-
@Turutur и вообще советую тебе юзать более удобный вариант:
это вставлять в "выполнить код"var myyytxt = [[ТВОЯпеременнаястекстом]].toLowerCase(); var searchTerms = [ 'lp', 'такое вот', 'ищу' ]; VAR_FOUND_STATUS = false; for (var i = 0; i < searchTerms.length; i++) { if (myyytxt.indexOf(searchTerms[i]) > - 1) { VAR_FOUND_STATUS = true; break; } }
[[ТВОЯ переменная с текстом]] это замени своей переменной, где лежит текст
после этого в обычный IF просто впиши [[FOUND_STATUS]]
если одно из слов было найдено, то условие ИФ будет выполнятся.