Как можно одним действием искать два и более слов в тексте?



  • Допустим, есть текст:

    Server: Maliby
    Name: Ivan  
    Surname: Kuprin  
    
    Server: Liter
    Name: James
    Surname: Bond
    
    Server: Games
    Name: Leonardo
    Surname: Dicaprio
    
    

    Нужно, чтобы если в тексте содержится "Maliby" и "Kuprin" возвращался true



  • @Barahol || это или && это и. Т.е. в условие if идет

    [[IS_EXIST1]]==true && [[IS_EXIST2]]==true
    


  • или вот так

    ([[TEXT]]).indexOf("Maliby") >= 0 && ([[TEXT]]).indexOf("Kuprin") >= 0
    

    может с кавычками где напутал но смысл такой



  • @serrgo Ууууухххх, говнокод! [[IS_EXIST1]]==true && [[IS_EXIST2]]==true -> [[IS_EXIST1]] && [[IS_EXIST2]]



  • @Barahol

    var pattern= /(Maliby.*?Kuprin)|(Kuprin.*?Maliby)/gms;
    
    var text =`
    Server: Maliby 
    Name: Ivan 
    Surname: Kuprin 
    
    Server: Liter 
    Name: James 
    Surname: Bond 
    
    Server: Games 
    Name: Leonardo 
    Surname: Dicaprio`;
    
    let isWordsFound = text.match(pattern)
    

    если isWordsFound не null значит в тексте есть оба слова. pattern - это регулярное выражение, я использую чистый javascript, но в БАС есть так же работа с регулярками без js



  • @dzxt said in Как можно одним действием искать два и более слов в тексте?:

    @Barahol

    var pattern= /(Maliby.*?Kuprin)|(Kuprin.*?Maliby)/gms;
    
    var text =`
    Server: Maliby 
    Name: Ivan 
    Surname: Kuprin 
    
    Server: Liter 
    Name: James 
    Surname: Bond 
    
    Server: Games 
    Name: Leonardo 
    Surname: Dicaprio`;
    
    let isWordsFound = text.match(pattern)
    

    если isWordsFound не null значит в тексте есть оба слова. pattern - это регулярное выражение, я использую чистый javascript, но в БАС есть так же работа с регулярками без js

    метод indexOf() будет работать быстрее регулярных выражений и потреблять гораздо меньше системных ресурсов. Также для решения задачи топикастера лучше использовать метод test() вместо match(), ну и в BAS не будет работать директива let



  • @Fox
    Сеачала решил что test не работает, потом понял что
    match:
    "Текст для поиска".match(pattern)
    test:
    pattern.test("Текст")



  • @dzxt said in Как можно одним действием искать два и более слов в тексте?:

    @Fox
    Сеачала решил что test не работает, потом понял что
    match:
    "Текст для поиска".match(pattern)
    test:
    pattern.test("Текст")

    var str = "Текст для поиска"
    var pattern = /текст/i
    log(pattern.test(str))
    

    9abc5d8b-62e5-4bdf-ac63-b6dd9a289a96-изображение.png


Log in to reply