Javascript - 从头开始​​搜索字符串

时间:2013-08-28 10:40:47

标签: 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");
    }
 }});

我的想法是,如果我输入内容并点击输入,如果用户中存在部分字符串变为蓝色。使用此代码我有问题,如果我写“Lu”我得到2个结果,“Dennis Lucky”和“ Lucy Foo“。

我想更改我的代码,所以当我输入“Lu”时,它会开始搜索以此sting开头的单词而不包含它。

2 个答案:

答案 0 :(得分:0)

最好使用正则表达式。由于您要搜索字符串的开头,请使用^

有关详细信息,请参阅Regular Expressions documentation on MDN

答案 1 :(得分:0)

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

如果indexOf的返回值大于-1,则条件为真。在JavaScript中,如果在“haystack”(您正在其中搜索的字符串)中找不到匹配的“needle”(您要搜索的字符串),indexOf将返回-1。否则,它会返回“haystack”中“needle”的第一个索引。

要解释我的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.

如果您想确保字符串以“needle”开头,您只需将代码更改为

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

如果你想要你的“单词”(“Lucy Foo”将是“Lucy”和“Foo”),要么用空格字符分割你的名字字符串,并用结果数组的元素执行搜索索引,或者转到正则表达式。