如何比较javascript中忽略特殊字符的字符串

时间:2015-01-09 18:01:23

标签: javascript unicode string-comparison

我正在开发一个应用程序,我被要求比较字符串,但字符串中的文字有特殊字符(西班牙语重音如“á”,“é”,“í”,“ó”和“ú”)

我已经使用toUpperCase()管理大写,但我仍然希望确保我的口音没有问题。

我要做的是比较已保存在系统中的一些单词,并检查是否使用了任何单词。

我所做的是将输入的单词存储在数组中,然后继续在另一个函数中分析它们(尚未实现)

这是我的功能,我存储用户输入的单词(可能会更改以使其更完整):

function clickNewWord(){
    var theWord = textField.value.toUpperCase();
    ArrayWrittenWords.push(theWord);
    textField.value = "";
}
PD:我将借此机会问:使用重音符号的正确编码是什么? UTF-8?

2 个答案:

答案 0 :(得分:2)

你可以转换它们然后匹配它们,如果我的例子清楚的话,请允许我:)

var stringInTheSystem = ['aaaa','bbbb'];// Array of string in your system;

var term = 'áaaa';// the word you want to compare it; 
term = term.replace(/á/g, "a"); 
term = term.replace(/é/g, "e"); 
term = term.replace(/í/g, "i"); 
term = term.replace(/ó/g, "o"); 
term = term.replace(/ú/g, "u"); 
var matcher = new RegExp( term, "i" );
$.grep( stringInTheSystem, function( value ) {
                  value = value.test || value.value || value;
                    console.log(matcher.test( value ));
});

答案 1 :(得分:2)

尽管这是一个古老的问题,但为了将来的谷歌搜索者,这里的best是从字符串中删除重音符号的方法:

var string = 'á é í ó ú';
string.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
>a e i o u