Convertir une chaîne de caractères en chaîne sans accent

Soyez le premier à donner votre avis sur cette source.

Snippet vu 47 888 fois - Téléchargée 26 fois

Contenu du snippet

Fonction permettant de convertir une chaîne de caractères passée en paramètre en chaîne de caractères sans accent.

Source / Exemple :


/// <summary>
/// Fonction de conversion de chaîne accentué en chaîne sans accent
/// </summary>
/// <param name="chaine">La chaine à convertir</param>
/// <returns>string</returns>
private string convertirChaineSansAccent(string chaine) 
{
	// Déclaration de variables
	string accent = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç";
	string sansAccent = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc";

	// Conversion des chaines en tableaux de caractères
	char[] tableauSansAccent = sansAccent.ToCharArray();
	char[] tableauAccent = accent.ToCharArray();

	// Pour chaque accent
	for(int i=0; i<accent.Length; i++) 
	{
		// Remplacement de l'accent par son équivalent sans accent dans la chaîne de caractères
		chaine = chaine.Replace(tableauAccent[i].ToString(), tableauSansAccent[i].ToString());
	}

	// Retour du résultat
	return chaine;
}

A voir également

Ajouter un commentaire

Commentaires

tmcuh
Messages postés
463
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
Bonne adaptation. J'avais posté un truc semblable il y a un bon moment, c'était encore en vb (http://vbfrance.com/forum.v2.aspx?ID=270777)
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29 -
L'idée est bonne mais tu peux améliorer ton code, les chaines sont indexables comme un tableau, et la méthode "Replace" accepte des arguments de type char.
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
On peut aussi passer par l'encodage 8 bits, mais cela ne fonctionnera pas pour certains caractères unicodes :
www.vbfrance.com/code.aspx?ID=25946
cs_lmamine
Messages postés
10
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
9 mai 2006
-
string FormaterText(string text)
{
byte[] aOctets = System.Text.Encoding.GetEncoding(1251).GetBytes(text);
string sEnleverAccents = System.Text.Encoding.ASCII.GetString(aOctets);//.ToLower();
return sEnleverAccents;
}
neodivx
Messages postés
1
Date d'inscription
dimanche 8 février 2004
Statut
Membre
Dernière intervention
25 août 2008
-
pour faire plus simple, voici un petit code encore plus rapide.

string AccentFrom = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç";
string AccentTo = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc";

for (int i1=0;i1<AccentFrom.Length;i1++)
{
from = from.Replace(AccentFrom[i1], AccentTo[i1]);
}
return from;

concernant le code utilisant la fonction FormaterText, je vous la déconseille. Essayez betement de passer la ligne: je vais à l'université: vous verrez que le ' est retourné comme un ? ( j'ai essayé avec le code 1250,1251,1252 )

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.