2015-07-13 3 views
-1

I MAKE: Я хочу найти специальные слова из домена программирования (HTML, JavaScript, Back-end ...) в большом тексте (более 1000 слов) и поставить все слова программирования, которые я найти новый массивНайти специальные слова в большом тексте

ПРОБЛЕМА: В моем сознании есть только один способ сделать это.

  1. Написать ОЧЕНЬ БОЛЬШОГО массива программирования словами
  2. Написать цикл, который будет сравнивать каждое слово из большого текста со словами из BIG ARRAY (с программированием словами)

Но я думаю, что есть некоторые решения, которые значительно упрощают задачу.

Любая идея, как сделать это БОЛЬШЕ проще?

Я пишу на сервере JavaScript

EDIT: ребята я знаю о IndexOf и т.д. спасибо, но я хочу найти

  1. Очень быстрый алгоритм, чтобы сделать это
  2. Как я могу во избежание записи слов программирования (500+)

"SOLVED:" Я нашел underscore.js Пример:

var tagsObject = { 
    "Java":"JAVA", 
    "J2EE":"J2EE" 
} 

var words = "Java is a big language ! ! " 

    var words = content.split(/\b/); // make array 
    words = _.uniq(words); // make array with uniq words 
    console.log( _.intersection(words,_.keys(tagsObject))); // Computes the list of values that are the intersection of all the arrays, return array 
//_.keys(tagsObject) - return array with keys 
+0

JavaScript hashtables (может быть, они называются «словарями»?) Просто поместите все ваши слова программирования в хеш-таблицу (в качестве ключей, значения, которые вы связываете с ними, не важны), а затем перебирайте каждое слово в " большой текст ", глядя на вашу хэш-таблицу. –

+0

Что вы хотите сделать, когда найдете слова? Посчитай их? Просто признайте, что текст содержит их? В вашем вопросе отсутствует какая-то информация. – Andy

+0

Вы * можете * избегать писать слова программирования или, по крайней мере, помогать компьютеру решать, какими они должны быть, но это большая тема, и может потребоваться больше времени для реализации, чем просто писать слова вручную. Я предлагаю вам ограничить этот вопрос только первой частью, которая по-прежнему нуждается в дополнительных деталях от вас, чтобы точно понять, что вы пытаетесь сделать. Тогда, если это будет хорошо, и вы поймете часть поиска в порядке, вернитесь к открытию «программирующих слов». –

ответ

0

Ну .. На самом деле, что я рекомендую вам, используйте JS-функцию с именем indexOf против вашего массива. Таким образом, вы, по крайней мере, удалили бы одну из ваших петель. Если возвращаемое значение вышеуказанной функции JS равно -1, то конкретный символ не найден.

Var sourceArray=[a,b,c,d,e]; 

Var toBeFoundValues=[a,x,z,d]; 

For(var i=0;i<toBeFoundValues.length;I++) 

If(sourceArray.indexOf(toBeFoundValues[I])!=-1) 

// logic here 

Надеюсь, приведенный выше код может вам помочь. Извините, если код не выглядит красивым, как я отвечаю через мой смартфон!

-3

Вы можете попробовать с помощью регулярного выражения. Это один поиск, чтобы увидеть, если HTML, JavaScript или Back-end в строке

var passingWords = "HTML,blah,otherWordsHere,JavaScript,Back-end"; 
var failingWords = "blah, otherWordsHere, h.tml, H.TML"; 
var re = new RegExp('(HTML)|(JavaScript)|(Back-end)'); 
console.log(re.test(passingWords)); 
console.log(re.test(failingWords)); 

Он вернется true, если любая из слов, указанных в new декларации в строке заданной и false, если они не являются.

В вашем случае вы, вероятно, захотите проверить каждое слово отдельно или написать другое регулярное выражение, которое позволяет любую комбинацию слов с любыми символами между каждым определенным словом.

Это только скажет вам, есть ли там слово или нет, а не там, где оно есть, или какая-либо другая информация.

JavaScript RegExp reference

+0

Это плохой ответ. Вы можете улучшить его, показывая _how_, вы можете использовать регулярное выражение. – Andy

+0

@ Andy Отредактировано, чтобы включить пример и более подробное объяснение – camiblanch

0

Есть довольно много fast string searching algorithms, которые приходят на ум, особенно Рабина-Карпа.

Реализация можно найти в this gist, где вы могли бы сравнить время наработки между различными функциями:

function simpleSearch(text, str) { 
    ... 

function searchRabinKarp(text, str) { 
    ... 

Производительность стандартных методов (regex и indexOf) сравнивали уже в this post.

Смежные вопросы