begin process at 2010 03 20 18:34:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

Formater une chaine de caracteres


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

Formater une chaine de caracteres

vendredi 16 juin 2006 à 15:49:18 | Formater une chaine de caracteres

kgadhi

Bonjour tous le monde et merci de votre aide,

J'ai besoin de formater une chaîne de caractères avant de créer un répertoire. Mais j y arrive pas.

Je vous mets le code que j'ai écrit en espérant que vous pourriez m'aider.


// remplacer les lettres avec accents avec les memes lettres sans accents
String chaine1 = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ";
  String chaine2 = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy";
  
// les caracteres autorisés  
String chaineOK = "azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789";
  
// La chaine de caracteres à formater  
String mot = "
ÀÁ Azerty @ rty General";
  
  for (int i=0; i<mot.length(); i++) {     
   for(int j=0; j<chaine1.length(); j++) {
    if (mot.charAt(i) == chaine1.charAt(j)) {
          mot.replace(mot.charAt(i), chaine2.charAt(j));
    }
   }
   
   boolean trouve = true;
   for (int j=0; j<chaineOK.length(); j++) {   
    if (mot.charAt(i) == chaineOK.charAt(j))
     trouve = false;     
    
    if (trouve) {
     mot.replace(mot.charAt(i), '_');
    }
   }   
  }
  
  System.out.println(mot);


et merci pour votre aide

lundi 19 juin 2006 à 12:19:17 | Re : Formater une chaine de caracteres

kgadhi

J'ai trouvé la solution :

// remplacer les lettres avec accents avec les memes lettres sans accents
String chaine1 = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ";
  String chaine2 = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy";
 
// les caracteres autorisés 
String chaineOK = "azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789";
 
// La chaine de caracteres à formater 
String mot = "ÀÁAzerty@rty  General";
 
  for (int i=0; i<mot.length(); i++) {   
     for(int j=0; j<chaine1.length(); j++) {
        if (mot.charAt(i) == chaine1.charAt(j)) {
          mot.replace(mot.charAt(i), chaine2.charAt(j));
        }
     }
  
     boolean trouve = true;
    for (int j=0; j<chaineOK.length(); j++) {  
       if (mot.charAt(i) == chaineOK.charAt(j))
         trouve = false;    
   
       if (trouve) {
         mot.replace(mot.charAt(i), '_');
       }
     }  
  }
 
  System.out.println(mot);
lundi 19 juin 2006 à 12:21:22 | Re : Formater une chaine de caracteres

kgadhi

J'ai enfin reussi à trouver une solution

Code :
// remplacer les lettres avec accents avec les memes lettres sans accents // les caracteres autorisés String chaineOK = "azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789"; // La chaine de caracteres à formater String mot = "ÀÁAzerty@rty General"; mot = mot.replaceAll("[ÀÁÂÃÄÅ]", "A"); mot = mot.replace("Ç", "C"); mot = mot.replaceAll("[ÈÉÊË]", "E"); mot = mot.replaceAll("[ÌÍÎÏ]", "I"); mot = mot.replaceAll("[ÒÓÔÕÖ]", "O"); mot = mot.replaceAll("[ÙÚÛÜ]", "U"); mot = mot.replace("Ý", "Y"); mot = mot.replaceAll("[àáâãäå]", "a"); mot = mot.replace("ç", "c"); mot = mot.replaceAll("[èéêë]", "e"); mot = mot.replaceAll("[ìíîï]", "i"); mot = mot.replaceAll("[ðòóôõö]", "o"); mot = mot.replaceAll("[ùúûü]", "u"); mot = mot.replaceAll("[ýÿ]", "y"); for (int i=0; i<mot.length(); i++) { boolean trouve = true; for (int j=0; j<chaineOK.length(); j++) { if (mot.charAt(i) == chaineOK.charAt(j)) trouve = false; } if (trouve) mot = mot.replace(mot.charAt(i), '_'); } System.out.println(mot);


lundi 19 juin 2006 à 12:22:58 | Re : Formater une chaine de caracteres

kgadhi

Réponse acceptée !
Excusez moi pour ces reponses multiples mais je veux mettre ma solution peut etre elle servira à quelqu'un d'autre:

// remplacer les lettres avec accents avec les memes lettres sans accents
// les caracteres autorisés 
String chaineOK = "azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789";
 
// La chaine de caracteres à formater 
String mot = "ÀÁAzerty@rty  General";
 
mot = mot.replaceAll("[ÀÁÂÃÄÅ]", "A");
mot = mot.replace("Ç", "C");
mot = mot.replaceAll("[ÈÉÊË]", "E");
mot = mot.replaceAll("[ÌÍÎÏ]", "I");
mot = mot.replaceAll("[ÒÓÔÕÖ]", "O");
mot = mot.replaceAll("[ÙÚÛÜ]", "U");
mot = mot.replace("Ý", "Y");
mot = mot.replaceAll("[àáâãäå]", "a");
mot = mot.replace("ç", "c");
mot = mot.replaceAll("[èéêë]", "e");
mot = mot.replaceAll("[ìíîï]", "i");
mot = mot.replaceAll("[ðòóôõö]", "o");
mot = mot.replaceAll("[ùúûü]", "u");
mot = mot.replaceAll("[ýÿ]", "y");

for (int i=0; i<mot.length(); i++) {
   boolean trouve = true;
   for (int j=0; j<chaineOK.length(); j++) {
       if (mot.charAt(i) == chaineOK.charAt(j))
trouve = false;
   }
   if (trouve)
       mot = mot.replace(mot.charAt(i), '_');
}

System.out.println(mot);
lundi 18 mai 2009 à 13:35:43 | Re : Formater une chaine de caracteres

iDude

Bonjour,

Chaque appel de méthode replace, ou replaceAll effectue un parcours de la chaine de caractères.
La complexité est ici en 15 O(n) ; pour plus d'information sur les complexités algorithmiques, se reporter à l'article de wikipédia sur la question.

Voici un algorithme similaire en O(n) : 15 fois plus rapide :


    public static String normalize (String string) {       
        StringBuilder stringBuilder = new StringBuilder(string);
        for (int i = 0 ; i < string.length() ; i++) {
            Character character = equivalent.get(string.charAt(i));
            if (character != null)
                stringBuilder.setCharAt(i, character);
        }
        return stringBuilder.toString();
    }
   
    private static Map<Character, Character> equivalent;

    static {
        equivalent = new HashMap<Character, Character>();
       
        equivalent.put('À', 'A');
        equivalent.put('Á', 'A');
        equivalent.put('Â', 'A');
        equivalent.put('Ã', 'A');
        equivalent.put('Ä', 'A');
        equivalent.put('Å', 'A');
        equivalent.put('Ç', 'C');
        equivalent.put('È', 'E');
        equivalent.put('É', 'E');
        equivalent.put('Ê', 'E');
        equivalent.put('Ë', 'E');
        equivalent.put('Ì', 'I');
        equivalent.put('Í', 'I');
        equivalent.put('Î', 'I');
        equivalent.put('Ï', 'I');
        equivalent.put('Ò', 'O');
        equivalent.put('Ó', 'O');
        equivalent.put('Ô', 'O');
        equivalent.put('Õ', 'O');
        equivalent.put('Ö', 'O');
        equivalent.put('Ù', 'U');
        equivalent.put('Ú', 'U');
        equivalent.put('Û', 'U');
        equivalent.put('Ü', 'U');
        equivalent.put('Ý', 'Y');
        equivalent.put('à', 'a');
        equivalent.put('á', 'a');
        equivalent.put('â', 'a');
        equivalent.put('ã', 'a');
        equivalent.put('ä', 'a');
        equivalent.put('å', 'a');
        equivalent.put('ç', 'c');
        equivalent.put('è', 'e');
        equivalent.put('é', 'e');
        equivalent.put('ê', 'e');
        equivalent.put('ë', 'e');
        equivalent.put('ì', 'i');
        equivalent.put('í', 'i');
        equivalent.put('î', 'i');
        equivalent.put('ï', 'i');
        equivalent.put('ð', 'o');
        equivalent.put('ò', 'o');
        equivalent.put('ó', 'o');
        equivalent.put('ô', 'o');
        equivalent.put('õ', 'o');
        equivalent.put('ö', 'o');
        equivalent.put('ù', 'u');
        equivalent.put('ú', 'u');
        equivalent.put('û', 'u');
        equivalent.put('ü', 'u');
        equivalent.put('ý', 'y');
        equivalent.put('ÿ', 'y');
    }


Cette discussion est classée dans : mot, chaine, formater, caracteres, charat


Répondre à ce message

Sujets en rapport avec ce message

formater une chaine de caracteres [ par chakall ] salutj'ai un entier compris entre 1 et 900 et je veux le transformer en une chaine de " quatre " caracteres avec des zéros devant.ex: 1 devient "0001" padder une chaine de caracteres [ par sebwol ] Bonjour,Je voudrais padder une chaine de caracteres à droite pour forcer la longueur de la chaine.Exemple "Test chaine" devient "Test chaine " couleur de chaine de caractères [ par othland ] slt tlmcomment affecter une couleur à un mot au milieu d'un texte affiché dans un JTextArea????sachant que mon mot est récupéré dans un Stringou bien Traitement de chaine de caracteres... [ par capoueidiablo ] Bonjours a tous,voila je fais des petites appli en java pour me mettre dans le bain de se langage qui devient incontournable, et j'ai comme qui dirait split, mot clef et java [ par jmg02001 ] bonjour , sauriez vous comment (spliter) -> récupérer des bouts de chaine d'une chaine original en définissant un caractère séparateur ou toute méthod bout de chaine de caracteres [ par deubal ] bonjour tout le monde,je suis debutante en info c'est donc surement une question simple, mais bon faut bien debuter...j'ai une chaine de caracteres (s aide [ par amel2006 ] y'a t'il une méthode qui copie à partird'une chaine une sous chaine qui début par un mot et se termine par un autre mot par exemple: <T Ajouter une chaine de caracteres à une liste [ par kgadhi ] Bonjour tous les monde et merci pour votre aide,j'ai dans une fenetre une liste qui est au depart vide et j'aimerais ajouter à cette liste des chaines affichage [ par anthony65 ] Bonjour,Je cherche a mettre au point un petit programme en java qui lira en parametre une chaine de caracteres et qui l'affichera caractere par caract Cryptage simple d'une chaine de caracteres [ par fllacer ] Bonjour,je cherche comment crypter simplement une String en Java et la décrypter.ex : String aCrypter = "password";String crypt = cryptage ("password"


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,482 sec (4)

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