2013-08-28 5 views
0

Здравствуйте я в настоящее время эта часть кода, который я разработал, но я хочу сделать некоторые изменения:Javascript - поиск строки от начала

$('#target').keydown(function(event) { 
if (event.which == 13) 
{ 
    var users = ["Dennis Lucky","Lucy Foo","Name Lastname","Billy Jean"]; 
    var match = 0; 
    var str = $('#target').val(); 

    for(i=0;i<users.length;i++) 
    { 
     if (users[i].toLowerCase().indexOf(str.toLowerCase()) > -1) 
     { 
      match++; 
      name = users[i]; 
     } 
    } 
    if(match == 1) 
    { 
     $('#target').val(''); 
     $('#chatbox').append('<span style="color:blue;">'+name+'</span>&nbsp;'); 
     console.log(name); 
    } 
    else if (match >= 2) 
    { 
     console.log("many entries"); 
    } 
}}); 

Идея заключается в том, что если я что-то типа и нажать кнопку ввода, если частичная строка существует в пользователях становится синим цветом. С этим кодом у меня проблема, что если я напишу «Лу», я получу 2 результата, «Деннис Лаки» и «Люси Фу».

Я хочу изменить свой код, поэтому, когда я наберу «Лу», он начнет поиск слов, начиная с этого укуса, и не включит его.

+0

Разделить имена и проверить индекс 0 – rlemon

ответ

0
if (users[i].toLowerCase().indexOf(str.toLowerCase()) > -1) 

Условие истинно, если возвращаемое значение indexOf больше -1. В JavaScript indexOf возвращает -1, если совпадение «игла» (строка, которую вы ищете) не найдена в вашем «haystack» (строка, которую вы ищете внутри). В противном случае он возвращает первый индекс «иглы» в вашем «стоге сена».

Чтобы объяснить мою терминологию IndexOf, вот пример:

haystack.indexOf(needle); // How to use the indexOf function 
console.log("apples oranges apples".indexOf("apples")); // This would print 0. 
console.log("apples oranges apples".indexOf("white")); // This would print -1. 

Если вы хотите, чтобы убедиться, что строка начинается с «иглы», вам просто нужно изменить код

if (users[i].toLowerCase().indexOf(str.toLowerCase()) == 0) 

Если вы хотите, чтобы ваши слова «Lucy Foo» были «Lucy» и «Foo»), либо разделите ваши строки имен на символ пробела, и выполните поиск по индексу с элементами результирующего массива, либо перейдите к регулярное выражение.

+0

Предполагается, что это «Люси Фу» в качестве имени Фамилия, так что == 0 в моей инструкции if отлично работает! Я нахожу регулярное выражение слишком сложным, что вы сэкономили мне много неприятностей :) – Dennis

+0

В то время как более сложные в конечном итоге вам придется сосать его и изучить. Вот ссылка на онлайн-тестер регулярных выражений, чтобы помочь с отладкой/записью. http://regexpal.com/ и http://www.regextester.com/ –

0

Лучше использовать регулярные выражения. Поскольку вы хотите выполнить поиск начала использования струн ^

См. Regular Expressions documentation on MDN для получения дополнительной информации.

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