begin process at 2010 02 10 13:26:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Au secours

 > 

""Purifier" un string


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

""Purifier" un string

jeudi 16 décembre 2004 à 16:49:40 | ""Purifier" un string

Flip84

Bonjour, j'suis débutant en C# et je souhaiterais comme le dit le sujet "purifier" un string.

Je m'explique :
On a un string, par exemple public string test = " Bonjour, je m'appelle Michaël ";

Ce que je souhaiterais ce serait à partir de cette chaine de récupérer "bonjourjemappellemichael".
Donc il faudrait élimener:
- tous les espaces
- les majuscules
- la ponctuation
Et transformer les caractères "spéciaux" tels que le ë de Michaël en caractère sans les accents.

En fait je veux faire ça sur le contenu d'une TextBox, mais ça doit être pareil.
Donc j'ai un début: Test.Text.ToLower().Trim()

Comment faire pour le reste ?
help :p


jeudi 16 décembre 2004 à 17:17:04 | Re : ""Purifier" un string

RMI

Tu peux utiliser machaine.Replace(" ","") pour supprimer les espaces et
machaine.Replace("é","e") pour remplacer les é par les "e"
Théo
jeudi 16 décembre 2004 à 17:38:48 | Re : ""Purifier" un string

Flip84

Je pense avoir déjà essayé, mais Replace() n'acceptait pas "" comme 2ème paramètre si je me souviens bien.

Ca marcherait pour les caractères spéciaux mais ne serait-ce pas fastidieux (+ perte de perforimance) que d'appliquer autant de fois le traitement Replace qu'il y a de caractères spéciaux ?

S'il n'y a pas d'autres moyen je le ferai, mais il reste encore à trouver une solution pour les espaces :)
jeudi 16 décembre 2004 à 17:46:26 | Re : ""Purifier" un string

TUHABITES

Réponse acceptée !
Salut,
je pense quand même que RMI a bien raison d'utiliser Replace().
Mais je vais te proposer une solution plus pédagogique:

string chaine="Bonjour, je m'appelle michaël";
chaine=chaine.ToLower();
string nchaine="";
for (int i=0;i<chaine.Length;i++)
{
byte k=(byte)chaine[i];
if (k>223 && k<231) nchaine+="a";
if (k>231 && k<236) nchaine+="e";
if (k>235 && k<240) nchaine+="i";
if (k>241 && k<247) nchaine+="o";
if (k>248 && k<253) nchaine+="u";
if (k==231) nchaine+="c";
if (k>96 && k<123) nchaine+=chaine[i];
}

La nouvelle chaine "épurée" est dans nchaine.
Il y a mieux notement avec Regex.Replace.


jeudi 16 décembre 2004 à 17:50:32 | Re : ""Purifier" un string

RMI

Pour supprimer les " " ma méthode fonctionne pour le reste,
tu peux aussi traiter caractere par caratere en testant
if (char.IsPonctuation(machaine,monindice) ...


Théo
jeudi 16 décembre 2004 à 18:50:15 | Re : ""Purifier" un string

Flip84

Merci à tous les 2, ça me sera très util dans mon petit programme.
Je vais pas chercher plus loin et tester la solution de TUHABITES.
Si vous avec pas de nouvelles de moi ici, c'est que tout va bien ;)
Merci merciii :D
vendredi 17 décembre 2004 à 12:05:18 | Re : ""Purifier" un string

coq

Administrateur CodeS-SourceS
reviens quand même pour valider ce qui t'as convenu, ça pourra servir à d'autres :-)


Cocoricoooooooo !!!!
coq
MVP Visual C#
vendredi 17 décembre 2004 à 12:05:33 | Re : ""Purifier" un string

Arthenius

Membre Club
mouais...
mais les boucles for qd meme c un peu lourd....

je trouve le replace plus élégant...

ps: si jamais tu choisi une des options retourne qd meme sur le site pour valider la "bonne" solution...

tcho bonnes fetes

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
samedi 18 décembre 2004 à 14:12:25 | Re : ""Purifier" un string

Flip84

*réfléchissage*

1. Le Replace() devrait s'exéctuer et donc passer en revue tous les caractères de la chaine X fois:
- 1 pour les espaces
- 6 pour les caractère spéciaux
- et encore Y fois pour tous les signes de ponctuations.
Ce qui donne 7+Y tests sur chaque caractère de la chaine.

2. La boucle permet de ne faire "que" 7 tests par caractère sur tous les caractères de la chaine.

La 2ème solution me parait meilleure et c'est elle que j'ai employée, maintenant je peux me tromper sur le fonctionnement de Replace()

Voila ;)

PS: c'est bien le code unicode des caractères qu'on test dans la boucle ou j'ai mal compris ? :p
dimanche 19 décembre 2004 à 21:20:22 | Re : ""Purifier" un string

ricklekebekoi

Réponse acceptée !
for (int i=0;i<chaine.Length;i++)
{
byte k=(byte)chaine[i];
if (k>223 && k<231) nchaine+="a";
if (k>231 && k<236) nchaine+="e";
if (k>235 && k<240) nchaine+="i";
if (k>241 && k<247) nchaine+="o";
if (k>248 && k<253) nchaine+="u";
if (k==231) nchaine+="c";
if (k>96 && k<123) nchaine+=chaine[i];
}


Si l'on veut parler performance, il me semble que mettre des "else" devant tous les if sauf le premier sauverais 6 tests.

De plus, en faisant ainsi, et sachant que la pluspart du temps, c'est la derniere condition qui risque d'être vrai, il faudrait la même en premier, et ainsi on sauvera 6 test la plupart du temps.

1 2

Cette discussion est classée dans : string, test, souhaiterais, purifier, michaël


Répondre à ce message

Sujets en rapport avec ce message

API GetPrivateProfileString [ par DevDragon ] Bonjour every body,   Mais qu'est ce que c'est que cette fonction... Je programme en Asp.Net En fait c'est une fonction d'une API de Windows (kernel32 Tableau de string [ par Cisaks ] Bonjour,Peut on faire en c# comme en php cad dans un tableau de string faire un truc du genre :string[] test;test["titi"] = "toto";Merci Insertion simple en SQL Server impossible [ par Cygace ] Bonjour, voila je suis entrain de m'arracher les cheveux sur une insertion ultra simple sur sql serveur 2005 mais qui refuse d'aller. Je vous mets le Passer variable de Form1 à Form2 [ par petitelarve ] Bonjour à tous ! J'ai une MainForm. Suite au click sur un bouton je veux passer une String dans ma form2 ki souvre ... Dans MainForm : void BTValidC String manipulation -> char [ par abdoulax ] Je suis encore un newb en c# et je bloque sur un truc tout con. En fait je voudrai faire un truc similaire au C : string test = "yep"; test[1] = 'a'; C# Conversion de string? [ par lopi ] Je me prends la tête avec un petit truc. <P class=M Parametre du construrcteurs [ par ricklekebekoi ] Bonjour.J'ai une classe construite comme ceci:[code]public Maclasse( int i, string s <FONT color=#006400 size Performances / CIL [ par MorpionMx ] Bonjour a tous, J'ai envie de commencer la journée par une question de performance.Soit un programme minimaliste qui crée un entier i et qui l'affiche Arret brutal [ par ricklekebekoi ] Voila, dans ma source (Résolutrice) je lis une equation au clavier, et lorsque celle-ci est lue, je la calcul. Comme elle sert pour les calculs "compl eval(string) en c# [ par HolyDev ] Hi !Alors voila j'aimerais récupérer le résultat d'une chaine de caractère stye "2+2".Je le faisais sous Access avec =Eval("2+2") mais en C# j'ai beau


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales