Нет оператора "волнушка", есть оператор побитового НЕ, который изменяет значение бита на противоположное (инверсия).
Хотите понять как это взаимосвязано - открывайте калькулятор в Windows, выберите представление Программист, набирайте значение десятичные и просматривайте их бинарном и hex представлении. Компьютер как и человек оперирует не только положительными, но и отрицательными значениями. Только это у нас в извилинах наших заложено, а в компьютере для представления знака числа используется его старший бит. |
представленные варианты неправильно работают, если, например, в строке есть слово "пилорама", а проверяем наличие слова "рама".
проще всего собрать словарик из слов строки с предложением, а потом для каждого из искомых слов проверить нахождение в словарике. Либо, наоборот, собрать словарик из искомых слов (карту "слово -> количество вхождений"), потом обойти предложение и поинкрементить количества, и в конце обойти словарик, проверив что все больше 0. Этот вариант мне больше нравится, текст скорее всего больше чем сборище проверяемых слов |
Цитата:
function quest(str,arr) { return arr.filter(function(el) { return str.split(/[-\.,\s!]+/).every(function(word) { return el.toLowerCase().split(/[-\.,\s!]+/).indexOf(word.toLowerCase()) !== -1 }) }) } var arr = ["В голове моей пилорама", "Да, да, да. пилорама", "Но кричалки и вопилки, Но кричалки и вопилки", "А также: Шумелки, пыхтелки и сопелки","Сочинию я неплохо иногда."] alert(quest("в голове рама",arr)); alert(quest("рама",arr)); alert(quest("пилорама да",arr)); |
Цитата:
function a() { let text = "мамалыга и папа акамама мыли раму хорошо, кошка мыла себя", find = "мыла Мама раму".split(/\s+/), re = new RegExp('(?<=\\s)('+find.join('|')+')(?=\\s)','gi'), check = text.match(re).filter((e, i, a)=> a.indexOf(e) == i).length; return check == find.length ? 'All words' : check + ' words' } alert(a()) |
Цитата:
const reg = /[-\.,\s!?]+/g, text = "мама и папа мыли раму хорошо, кошка мыла себя", search = "Мама мыла раму", textArr = text.toLowerCase().split(reg), searchArr = search.toLowerCase().split(reg); if (searchArr.every(v => ~textArr.indexOf(v))) { alert("все слова из text присутствуют в starttext") } метод indexOf есть как у строк так и у массивов разбив строку в массив мы решаем данную проблему |
Часовой пояс GMT +3, время: 23:40. |