Javascript / Jquery搜索字符串中是否存在单词

时间:2013-04-25 20:49:55

标签: javascript jquery search

我绝对是新手,我正在尝试一个练习项目。 它基本上是一个字谜游戏,用户点击某些字母组合一个单词。 我现在需要检查它实际上是一个单词。我已经制作了一个包含字典中所有单词的文本文件(从someones网站复制,只是一个练习项目)。我已经设法得到它,如果我可以console.log的话。

function Searchtext(){
    $.get('words.txt', function(data) {
console.log(data);



}, 'text');
    }

现在我想搜索单词以查看玩家的答案(在名为playeranswer的变量中声明的字符串)是否在列表中。我不需要它来返回这个词,只是它是否存在。注:它必须是精确的,以便例如如果用户输入“ender”这不是一个单词,它将不会返回true,因为它找到单词“render”。也许有.length的东西会有帮助吗?

我将如何做到这一点?

感谢您的帮助。

5 个答案:

答案 0 :(得分:3)

由于$.get是异步的,因此您必须以不同的方式进行设置。我这样做:

function Searchtext(name, callback) {
    $.get('words.txt', function(data) {
        data = data.split("\n");
        var contains = (data.indexOf(name) > -1);
        callback(contains);
    }, 'text');
}

根据文本文件的设置方式,您可能需要更改.split("\n")(将单词分成一个数组,如果它们各自在一行中)到.split(" ")(分割将单词分成数组,如果它们被空格分隔开。)

你会这样称呼:

SearchText(playername, function (matched) {
    if (matched) {
        // Name was in list
    } else {
        // Name wasn't in list
    }
});

DEMO: http://jsfiddle.net/Fkr5B/

在演示中,我必须模拟AJAX请求。

答案 1 :(得分:2)

我会使用正则表达式(使用RegExp对象)。下面是一个简单的示例,它尝试匹配两个不同字符串中的单词:

var word_to_match = 'ender';
var string_of_words = 'a string containing the word ender, this will match';
var second_string_of_words = 'a string that will not produce a match';

//use \b to match on word boundaries
var filter = new RegExp('\\b' + word_to_match + '\\b', 'gi');

if(string_of_words.match(filter)) {
    alert('found word: ' + word_to_match);
} else {
    alert('did not find word: ' + word_to_match);
}

if(second_string_of_words.match(filter)) {
    alert('found word: ' + word_to_match);
} else {
    alert('did not find word: ' + word_to_match);
}

您将看到第一个if语句通过,而第二个语句失败。可能需要一点阅读,但您应该能够扩展此示例以适合您的用例。

答案 2 :(得分:0)

您应首先解析data变量并将这些字词放入Array。 然后,您可以通过检查Array是否包含该字词来测试用户是否输入了有效字词。

var Dict = new Array("render", "bender", "word");

function isValid(word){
    if(Dict.indexOf(word) == -1) 
        return false; //the word is not valid
    return true; //the word is valid
}    

答案 3 :(得分:0)

你最好的选择是正则表达式。 你可以做的是取用户输入的字符串,用它包装 字边界指示(因此它将与确切的单词匹配,没有别的) 在regexp然后使用match()

答案 4 :(得分:0)

我制作了这个简单的脚本,希望有所帮助

$(document).ready(function(e) {
    function parseData(data) {
    $('#inpu').blur(function() {
        var str_to_search = $.trim($('#inpu').val());
        if(str_to_search.length) {
            var search_res = data.search(str_to_search);
            if(search_res != -1) {
                alert('Word Valid!');
            } else {
                alert('Word no valid');
            }
        }
    });
}
$.get('to_search.txt', parseData).fail(function() { alert('error');});
});