jQuery多字符串案例和口音不敏感

时间:2016-02-03 18:35:27

标签: javascript jquery

我在这里的第一篇文章。我在网站上有一个功能,显示随机生成的法语短语,挑战读者在文本框中将其翻译成英语。单击按钮时,输入的文本将与所有可能的答案进行比较(给定短语有多个正确的翻译)。我已经四处寻找答案,但似乎没有什么能适合我的情况。

这里是jQuery:

var correctAnswer = function(){$('#correctmessage').show('fast');$('#errormessage').hide('fast');}
var wrongAnswer = function(){$('#errormessage').show('fast');$('#correctmessage').hide('fast');}

$('#1').find('button').on('click', function(){
    var text = $(this).parent().find('.translatefield').val();
    var compareText = "I went to the cinema";
    var compareText2 = "I have been to the cinema";
    if (text == compareText || text == compareText2) {
        correctAnswer();
    }
    else {
        wrongAnswer(); 
    }
});

所以我想知道我是否可以把比较'变量变成一个变量,即“我去了电影院,或者我去过电影院等等”。在一个变量内整洁。但主要是我需要知道如何在if中调用该变量,以便它也可以接受没有重音字符的答案,无论是大写还是小写......我希望这很清楚!感谢您提供的任何帮助,这一直困扰着我一段时间!

3 个答案:

答案 0 :(得分:1)

正如Mark Holland所评论,使用数组作为比较短语。

如果你正在使用jQuery,你可以使用jQuery.inArray()

https://api.jquery.com/jQuery.inArray/

var compareText = ['我去了电影院','我去过电影院'];

if ($.inArray(text.toLowerCase(), compareText)) {
   ... do stuff
}

要忽略重音,请使用以下解决方案:

String.prototype.removeAccents = function(){
 return this
         .replace(/[áàãâä]/gi,"a")
         .replace(/[éè¨ê]/gi,"e")
         .replace(/[íìïî]/gi,"i")
         .replace(/[óòöôõ]/gi,"o")
         .replace(/[úùüû]/gi, "u")
         .replace(/[ç]/gi, "c")
         .replace(/[ñ]/gi, "n")
         .replace(/[^a-zA-Z0-9]/g," ");
}

对Luan Castro的信用 Perform a find/match with javascript, ignoring special language characters (accents, for example)?

答案 1 :(得分:0)

正如Mark Holland所说,数组会回答你的第一个问题。

JS arrays

要忽略重音,快速搜索会给我这个答案:

Replace accents

为了忽略大写/小写,快速搜索给了我这个答案。

Ignore case

答案 2 :(得分:0)

如何将字符串设置为一个数组并迭代此数组以与答案进行比较?