2016-02-27 3 views
1

Я пытаюсь сравнить слова в строках. Это то, что я хочу сделать:Сравнение слов в строках

var string1 = "Action, Adventure, Comedy"; 
var string2 = "Action Horror"; 

if (string1 have a word from string 2 == true) 
{ 
    alert("found!"); 
} 

Я попробовал матч(), но в моей ситуации, он пытается найти «Действие Ужас» вместо «Action» и «Ужас» слова.

+0

http://stackoverflow.com/a/21081760/4689622 –

+0

Возможный дубликат [JavaScript/jQuery - как проверить, содержат ли строки определенные слова] (http://stackoverflow.com/questions/5388429/javascript- JQuery-хау для проверки, если-а-строки содержат специфические-слова) – mcy

ответ

1

Вы можете сделать что-то вроде этого, используя match() и reduce()

var string1 = "Action, Adventure, Comedy"; 
 
var string2 = "action Horror"; 
 

 
var strArr = string1.match(/\b\w+?\b/g) 
 
    //getting all words from string one 
 
    .map(function(v) { 
 
    return v.toLowerCase(); 
 
    }); 
 
//converting strings to lower case for ignoring case 
 

 
var res = string2.match(/\b\w+?\b/g) 
 
    // getting words from second string 
 
    .reduce(function(a, b) { 
 
    return a || strArr.indexOf(b.toLowerCase()) != -1; 
 
    //checking string in first word array 
 
    }, false); 
 
    // also set initial value as false since no strings are matched now 
 

 
console.log(res);

Или

var string1 = "Action, Adventure, Comedy"; 
 
var string2 = "action Horror"; 
 

 
var res = string2.match(/\b\w+?\b/g) 
 
    // getting words from second string 
 
    .reduce(function(a, b) { 
 
    return a || new RegExp('\\b' + b + '\\b', 'i').test(string1); 
 
    //checking string in first string 
 
    }, false); 
 
    // also set initial value as false since no strings are matched now 
 

 
console.log(res);

См: JavaScript/jQuery - How to check if a string contain specific words

0

Решение с String.split, String.indexOf и Array.foreach функции:

var string1 = "Action, Adventure, Comedy, Horror"; 
    var string2 = "Action Horror"; 

    var str1_arr = string1.split(', '); 
    str1_arr.forEach(function (v) { 
     if (string2.indexOf(v) !== -1) { 
      console.log("string '"+ v +"'(from string1) was found in string2 in position " + string2.indexOf(v)); 
     } 
    }); 

// the output: 
string 'Action'(from string1) was found in string2 in position 0 
string 'Horror'(from string1) was found in string2 in position 7 

https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/split https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

-1

Объявите два множества:

var Set set1,ser2; 

Копирование строки1 в set1 и string2 в set2

(Не знаете, как это сделать). Затем получим:

var intersection = new Set ([x for (x of set1) if (set2.has (x))]);

if intersection.prototype.size>0 

Есть слова, общие для обеих строк (и наборов).

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