Comment enlever les accents et remplacer les caracteres speciaux en Javascript ?


Lors de la mise en place de tracking et de partage des données, une des contraintes à prendre en compte concerne les accents et caractères spéciaux qui peuvent être interdites par certains outils (l'outil ne prenant pas en compte la donnée si un caractère interdit est envoyé).

La solution est de standardiser les valeurs avec un format universel accepté par les outils utilisés. Le plus souvent la règle suivante sera compatible avec les outils :

  • Enlever les accents = les remplacer par un caractère sans accents
  • Enlever les espaces = les remplacer par un underscore
  • Remplacer les caractères spéciaux par des underscores

Pour réaliser cette tâche, il est conseillé de créer la fonction Javascript correspondante et de l'utiliser pour formatter les données avant envoi.

Ci-dessous, un exemple de fonction qui réalise cette tâche. La fonction suppr_acc_car_spec("Caractères spéciaux à nettoyer : Á#'ç*$œ!&") convertit le texte "Caractères spéciaux à nettoyer : Á#'ç*$œ!&" en "Caracteres_speciaux_a_nettoyer___a__c__oe__".

 

conversion-accents

 

suppr_acc_car_spec = function(a) {
if(typeof a === 'string'){
var str = a ; var tab_accent_brut = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
var tab_sansAccent_brut = "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn";
var tab_accent = tab_accent_brut.split('');
var tab_sansAccent = tab_sansAccent_brut.split('');
tabCorrAcc = new Array();
var i = -1;
while (tab_accent[++i]) {
tabCorrAcc[tab_accent[i]] = tab_sansAccent[i]
}
tabCorrAcc['Œ'] = 'OE';
tabCorrAcc['œ'] = 'oe';
str = str.replace(/./g, function($0) {
return (tabCorrAcc[$0]) ? tabCorrAcc[$0] : $0
})
str = str.replace(/&/g, '_');
str = str.replace(/_amp;/g, '');
str = str.replace(/</g, '_');
str = str.replace(/_lt;/g, '_');
str = str.replace(/>/g, '_');
str = str.replace(/_gt;/g, '_');
str = str.replace(/(-| |#|"|@|:|\.|,|;|'|%|!|²|=|÷|\+|\?|\/|\[|\]|\{|\}|\*|\^|\$|\\|`|"|'|¨|€|£|¤|µ|§|~|ƒ|„|©|°)/g, '_')
return str;
}}

0.00 avg. rating (0% score) - 0 votes

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *