Suppression des accents/diacritiques des chaînes en JavaScript
Cet article examine les techniques de suppression des accents ou des signes diacritiques des chaînes en JavaScript, en abordant les problèmes suivants : défi rencontré dans IE6 avec les expressions régulières.
Utilisation d'ES2015/ES6 String.prototype.normalize()
ES2015/ES6 introduit la méthode String.prototype.normalize(), qui permet la suppression des signes diacritiques. Par exemple :
const str = "Crème Brûlée"; const normalized = str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); console.log(normalized); // Output: "Creme Brulee"
Notez que « NFD » est utilisé pour décomposer les graphèmes combinés en graphèmes simples, facilitant ainsi la suppression des signes diacritiques.
Utilisation des échappements de propriétés Unicode
Une autre approche consiste à utiliser la propriété Unicode échappe :
const str = "Crème Brûlée"; const removed = str.normalize("NFD").replace(/\p{Diacritic}/gu, ""); console.log(removed); // Output: "Creme Brulee"
À des fins de tri
Si l'objectif est simplement de trier, Intl.Collator peut être utilisé :
const c = new Intl.Collator(); const arr = ["creme brulee", "crème brûlée", ...]; arr.sort(c.compare);
Considérations sur IE6
Avec IE6, les expressions régulières peuvent être problématiques. Pour résoudre ce problème, une approche simple consisterait à remplacer manuellement des caractères accentués spécifiques par leurs caractères de base équivalents. Par exemple :
const accentsTidy = (str) => { return str .toLowerCase() .replace(/\s/g, "") .replace(/[àáâãäå]/g, "a") .replace(/æ/g, "ae") // ... and so on .replace(/\W/g, ""); };
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!