如何让Javascript忽略通过正则表达式اعراب
的阿拉伯语表达式? 例如,我希望و
和ؤ
相等,ا آ اَ اِ
都是平等的,依此类推。请帮忙。多谢。
解决方案是将重音字母转换为非重音等效字母,这样就可以更轻松地检查它们是否相等。
这是一个简单的代码,可以帮助您识别重音,然后将其替换为原始字母。
var noAccentOrigin = {
'ك': 'ک',
'ﻷ': 'لا',
'ؤ': 'و',
'ى': 'ی',
'ي': 'ی',
'ئ': 'ی',
'أ': 'ا',
'إ': 'ا',
'آ': 'ا',
'ٱ': 'ا',
'ٳ': 'ا',
'ة': 'ه',
'ء': '',
'ِ': '',
'ْ': '',
'ُ': '',
'َ': '',
'ّ': '',
'ٍ': '',
'ً': '',
'ٌ': '',
'ٓ': '',
'ٰ': '',
'ٔ': '',
'�': ''
}
var accentRemover = function(str) {
return str.replace(/[^u0000-u007E]/g, function(a) {
return noAccentOrigin[a] == undefined ? a : noAccentOrigin[a];
});
}
var stringToTest = 'ا آ اَ اِ'
console.log('Original string :' + stringToTest)
console.log('Converted string :' + accentRemover(stringToTest))
//test example
console.log('Is ؤ and و are equal ? : ')
console.log(accentRemover('ؤ') == accentRemover('و'))
希望有帮助
我对此进行了一些思考,您真正需要的是使用具有基本级别的 Unicode 排序算法,这个问题很好地概述了这个问题,并查看我建议使用 String.prototype.localeCompare(( 函数给出sensitivity
的答案base
太棒了 但我想要的是,当我搜索"و"时,JavaScript 还在搜索中包含"ؤ",这意味着该函数不应该删除重音,而是添加它。
非常感谢
var noAccentOrigin = {
'ك': 'ک',
'ﻷ': 'لا',
'ؤ': 'و',
'ى': 'ی',
'ي': 'ی',
'ئ': 'ی',
'أ': 'ا',
'إ': 'ا',
'آ': 'ا',
'ٱ': 'ا',
'ٳ': 'ا',
'ة': 'ه',
'ء': '',
'ِ': '',
'ْ': '',
'ُ': '',
'َ': '',
'ّ': '',
'ٍ': '',
'ً': '',
'ٌ': '',
'ٓ': '',
'ٰ': '',
'ٔ': '',
'�': ''
}
var accentRemover = function(str) {
return str.replace(/[^u0000-u007E]/g, function(a) {
return noAccentOrigin[a] == undefined ? a : noAccentOrigin[a];
});
}
var stringToTest = 'ا آ اَ اِ'
console.log('Original string :' + stringToTest)
console.log('Converted string :' + accentRemover(stringToTest))
//test example
console.log('Is ؤ and و are equal ? : ')
console.log(accentRemover('ؤ') == accentRemover('و'))