1

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

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



}, 'text');
    }

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

我该怎么做呢?

谢谢你的帮助。

4

4 回答 4

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
    }
});

演示:http: //jsfiddle.net/Fkr5B/

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

于 2013-04-25T21:12:28.813 回答
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语句通过,而第二个语句失败。可能需要阅读一些内容,但您应该能够扩展此示例以适合您的用例。

于 2013-04-25T21:12:58.397 回答
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
}    
于 2013-04-25T21:05:56.893 回答
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');});
});
于 2013-04-25T21:15:33.073 回答