我绝对是新手,我正在尝试一个练习项目。 它基本上是一个字谜游戏,用户点击某些字母组合一个单词。 我现在需要检查它实际上是一个单词。我已经制作了一个包含字典中所有单词的文本文件(从someones网站复制,只是一个练习项目)。我已经设法得到它,如果我可以console.log的话。
function Searchtext(){
$.get('words.txt', function(data) {
console.log(data);
}, 'text');
}
现在我想搜索单词以查看玩家的答案(在名为playeranswer的变量中声明的字符串)是否在列表中。我不需要它来返回这个词,只是它是否存在。注:它必须是精确的,以便例如如果用户输入“ender”这不是一个单词,它将不会返回true,因为它找到单词“render”。也许有.length的东西会有帮助吗?
我将如何做到这一点?
感谢您的帮助。
答案 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');});
});