如何比较 javascript 中的字符串忽略特殊字符
How to compare strings in javascript ignoring special characters
我正在开发一个应用,有人要求我比较字符串,但字符串中的文本有特殊字符(西班牙语重音符号,如“á”、“é”、“í”、“ó”和“ú” ")
我已经使用 toUpperCase()
管理大小写,但是,我仍然想确保我没有遇到重音问题。
我要做的是比较一些已经保存在系统中的单词,并检查是否使用了其中的任何一个。
我做的是将输入的单词存储在一个数组中,然后在另一个函数(尚未实现)中继续分析它们
这是我的函数,我在其中存储用户键入的单词(它可能会更改以使其更完整):
function clickNewWord(){
var theWord = textField.value.toUpperCase();
ArrayWrittenWords.push(theWord);
textField.value = "";
}
PD:我会借此机会问:处理重音符号的正确编码是什么? UTF-8?
你可以转换它们然后匹配它们,如果我的例子很清楚的话让我来:)
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 ));
});
尽管这是一个老问题,但为了未来的 google 员工,这里是 best 从字符串中删除重音的方法:
var string = 'á é í ó ú';
string.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
>a e i o u
我正在开发一个应用,有人要求我比较字符串,但字符串中的文本有特殊字符(西班牙语重音符号,如“á”、“é”、“í”、“ó”和“ú” ")
我已经使用 toUpperCase()
管理大小写,但是,我仍然想确保我没有遇到重音问题。
我要做的是比较一些已经保存在系统中的单词,并检查是否使用了其中的任何一个。
我做的是将输入的单词存储在一个数组中,然后在另一个函数(尚未实现)中继续分析它们
这是我的函数,我在其中存储用户键入的单词(它可能会更改以使其更完整):
function clickNewWord(){
var theWord = textField.value.toUpperCase();
ArrayWrittenWords.push(theWord);
textField.value = "";
}
PD:我会借此机会问:处理重音符号的正确编码是什么? UTF-8?
你可以转换它们然后匹配它们,如果我的例子很清楚的话让我来:)
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 ));
});
尽管这是一个老问题,但为了未来的 google 员工,这里是 best 从字符串中删除重音的方法:
var string = 'á é í ó ú';
string.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
>a e i o u