Supprimer les accents/diacritiques dans une chaîne en JavaScript
La suppression des caractères accentués des chaînes peut être une tâche utile pour le traitement de texte et l'analyse de données. Dans le code fourni, la fonction accentsTidy tente de supprimer les accents à l'aide d'expressions régulières. Cependant, cette approche peut ne pas être efficace ou fiable, en particulier dans les navigateurs plus anciens comme IE6.
Solution ES2015/ES6
Une solution plus moderne et efficace consiste à utiliser le Méthode ES2015/ES6 String.prototype.normalize(). Cette méthode convertit une chaîne en une forme normalisée Unicode. En utilisant la forme "NFD", qui décompose les graphèmes combinés en caractères de base et en combinant les signes, la suppression des signes diacritiques devient plus facile. Voici un exemple :
const str = "Crème Brûlée"; str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); // "Creme Brulee"
L'expression régulière correspond à la plage Unicode U 0300 → U 036F, qui comprend divers signes diacritiques. D'autres formes normales Unicode telles que "NFKD" peuvent être utilisées pour normaliser différemment des caractères comme uFB01 (fi).
Utilisation des échappements de propriétés Unicode
ES2018 a introduit les échappements de propriétés Unicode, fournissant un moyen plus concis de supprimer les signes diacritiques :
str.normalize("NFD").replace(/\p{Diacritic}/gu, ""); // "Creme Brulee"
Cet échappement fait correspondre tous les caractères avec le Propriété Unicode "Diacritic".
Alternative : Tri
Si l'objectif est de trier des chaînes avec des accents, l'objet Intl.Collator peut être utilisé. Il prend en charge le tri des chaînes en fonction de leur ordre canonique Unicode, qui ignore les signes diacritiques. Voici un exemple :
const c = new Intl.Collator(); ["creme brulee", "crème brûlée", "crame brulai", "crome brouillé", "creme brulay", "creme brulfé", "creme bruléa"].sort(c.compare); // ['crame brulai', 'creme brulay', 'creme bruléa', 'creme brulee', 'crème brûlée', 'creme brulfé', 'crome brouillé']
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!