Supprimer les accents en Javascript

Mars 2013

Javascript n'intègre pas de fonction native qui permette de remplacer tous les caractères accentués d'une chaine de caractère par leur version sans accent (une forme de normalisation).

La seule solution c'est donc de créer une fonction utilisateur pour faire une translation des caractères accentués (et les substituer par leur version "nu").

On en trouve beaucoup sur internet, aucune n'est parfaite, car il y a énormément de caractères diacritiques (c'est comme ça qu'on appelle les caractères accentués), dont certains auxquelles on ne pense pas comme les ligatures (œ, æ...).

Voici une fonction qui permet de supprimer les accents d'une chaine de caractère :

String.prototype.sansAccent = function(){
	var accent = [
		/[\300-\306]/g, /[\340-\346]/g, // A, a
		/[\310-\313]/g, /[\350-\353]/g, // E, e
		/[\314-\317]/g, /[\354-\357]/g, // I, i
		/[\322-\330]/g, /[\362-\370]/g, // O, o
		/[\331-\334]/g, /[\371-\374]/g, // U, u
		/[\321]/g, /[\361]/g, // N, n
		/[\307]/g, /[\347]/g, // C, c
	];
	var noaccent = ['A','a','E','e','I','i','O','o','U','u','N','n','C','c'];
	
	var str = this;
	for(var i = 0; i < accent.length; i++){
		str = str.replace(accent[i], noaccent[i]);
	}
	
	return str;
}

Cette fonction étend le prototype de l'objet String, c'est-à-dire que chaque objet de type string possède cette méthode. Elle fonctionne avec tous les encodages (UTF-8 et ISO-8859-1 (Latin1) notamment). Pour l'utiliser c'est très simple :

var chaine = "À côté d'un verre vide, il y a toujours un mec plein.";
alert( chaine.sansAccent() );

Cette page peut vous intéresser : changer la couleur du texte sur excel à lire tout de suite !

J'espère que vous apprécierez le proverbe à la con ^^

Vous n'êtes pas obligé d'étendre le type String, vous pouvez déclarer la fonction normalement, comme ceci : function sansAccent(str){....

Si cette fonction n'est pas assez complète, vous pouvez vous baser sur celle-ci : https://github.com/yvg/js-replace-diacritics, mais elle ne conserve par les majuscules.

Encore faim ? allez lire ça : la cité blanche !

6 commentaires :
commentaire n°2874 par Félix
Félix samedi 23 août 2014, 07:30
Ah excellent cette fonction, merci beaucoup pour le partage !
commentaire n°2890 par Cassio
Cassio vendredi 19 septembre 2014, 23:29
Very good solution. I work in a company who provide IT solutions to my city's cityhall. I was needing this function to a public website that will be released soon. Thanks.
commentaire n°3339 par ORN Fox
ORN Fox mardi 28 juin 2016, 11:57
Merci pour cette fonction qui fonctionne à merveille !
commentaire n°3520 par djcaesar9114
djcaesar9114 samedi 8 juillet 2017, 22:43
Ça date de 2013 mais c'est toujours super efficace!
Merci :)
commentaire n°6272 par culture
culture mercredi 30 décembre 2020, 10:20
Fonction à l'usage des incultes incapables de parler leur langue et prêts pour l'esclavage.
commentaire n°12323 par ForceFurieuse
ForceFurieuse jeudi 7 avril 2022, 23:20
Les majuscules accentuées ne sont pas acceptées sur la plupart des interfaces anglaises.
A moins de vivre comme un homme préhistorique inculte, enfermé dans sa grotte au paléolithique inférieur, cette fonction est très utile.
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré