2015-07-21 2 views
-1

Вот мой код. Я пытаюсь сопоставить точные слова, которые были сохранены в массиве hit []. Я хочу только напечатать то, что именно находится в переменной myName. Можем ли мы сделать это без метода match()?Поиск точной строки без использования соответствия()

var text = "Blaaah Bllaaah Bllaaah Paolo Blahhh Paaolo paolo"; 

var myName = "Paolo"; 

var hits = []; 

for(var x=0; x<text.length; x++){ 
     if(text[x]===("P")){ 

      for(var i = x; i<(myName.length + x); i++){ 
       hits.push(text[i]); 
       } 
      } 


    } 

    if(hits.length === 0){ 
     console.log("Your name wasn't found");  
     }else{ 



      console.log(hits); 

     } 
+0

объявить текст как массив – Raghavendra

+0

лучше пойти с функцией соответствия. например: «Blaaah Bllaaah Bllaaah Paolo Blahhh Paaolo paolo» .match (/ \ bPaaolo \ b /) – Raghavendra

ответ

1

Как насчет:

var text = "Blaaah Bllaaah Bllaaah Paolo Blahhh Paaolo paolo"; 

var myName = "Paolo"; 

var textArray = text.split(' '); 
var hits = textArray.filter(function(value){ return value === myName; }); 

if(hits.length === 0){ 
    console.log("Your name wasn't found");  
}else{ 
    console.log(hits); 
} 

Решение использует array.filter() найти точные совпадения.

-1

Вы можете использовать indexOf METHODE:

"Blaaah Bllaaah Bllaaah Paolo Blahhh Paaolo paolo".indexOf('Paolo') => 23

"Blaaah Bllaaah Bllaaah Paolo Blahhh Paaolo paolo".indexOf('Paolooo') => -1

0

Простое условие:

if(text.indexOf(myName) != -1) { 
    // name found 
} 

или если вы хотите слова, просто разделите список слов int О массив слов:

if(text.split(' ').indexOf(myName) != -1) { 
    // name found 
} 

Посмотреть здесь жить:

var text = "Blaaah Bllaaah Bllaaah Paolo Blahhh Paaolo paolo"; 
 

 
function findName(word) { 
 
    var name = prompt('Enter name:'); 
 
    if (!name) 
 
    return; 
 
    var t = word ? text.split(' ') : text; 
 
    if(t.indexOf(name) != -1) { 
 
    alert('Name ' + name + ' found!'); 
 
    } 
 
    else { 
 
    alert('Name ' + name + ' NOT found!'); 
 
    } 
 
    findName(word); 
 
}
<button onclick="findName()">String match</button> 
 
<button onclick="findName(true)">Word match</button>

+1

это не сработает для «PaoloPaolo». Так что это не бессмысленно. – smnbbrv

+0

И это не должно ... Вы можете увидеть «PaoloPaolo» в исходном тексте? – Shomz

+0

Он должен найти Паоло 2 раза, когда в тексте нет слова «Paolo», но есть «PaoloPaolo», которого мы не ищем – smnbbrv

0

Попробуйте следующее:

var text = "Blaaah Bllaaah Bllaaah Paolo Blahhh Paaolo paolo"; 

var myName = "Paolo"; 

var foundArray = text.split(" ").filter(function(e){ return e == myName }); 

if (foundArray.length) { /* name is found */ } 
-1

Вы можете использовать простой факта n Точное совпадение:

Сначала вы создадите массив, с которым будете соответствовать вашему поиску. Затем вы просто сравниваете все эти элементы массива с приведенным выше кодом. Результат будет выглядеть примерно так:

var haystack = "Blaaah Bllaaah Bllaaah Paolo Paolo Blahhh Paaolo paolo"; 

var search = "Paolo"; 

// Create an array 
var haystackArray = haystack.split(" "); 
var hits =0; 

// For each array element 
for(var i = 0; i < haystackArray.length; i ++){ 
    // Check if this array element match exactly your search string 
    if(search == haystackArray[i]) 
     hits++; 
} 
console.log(hits); 
Смежные вопросы