IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Formater une chaîne de caractéres


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 40
    Par défaut Formater une chaîne de caractéres
    Bonjour tous le monde et merci pour 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.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // 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

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut

    • Merci de préciser l'erreur (message s'il y a) ou ce qui ne va pas. Plus tu donne de précision, mieux on pourra te répondre .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Si tu peux modifier en amont les données, je pense que dans ton cas tu ferais bien mieux de jeter un coup d'oeil aux expressions régulières.
    Si par contre tu ne peux pas modifier directement le format des données en entrée, alors il va effectivement falloir se tapper des tests.

    Quel type de problème rencontres-tu ?

  4. #4
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    +1 pour les expressions régulières. D'après ce que j'ai compris tu voulais une sorte de fonction "strstr" comme en PHP. Le pb c'est qu'il n'y en a pas en Java (à ma connaissance)

  5. #5
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 40
    Par défaut
    il n y a pas de message d'erreur,
    ça me detecte bien les caractéres interdits, sauf que la chaine de caracteres "mot" n'est pas modifiée.

  6. #6
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 40
    Par défaut
    en php j y arrive bien:
    pour le premier test j'utilise la fonction strtr() :
    strtr(mot, chaine1, chaine2);et pour le deuxime test, j'utilise preg_replace():
    preg_replace('/([^.a-z0-9]+)/i', '_', mot);

    mais je ne connais pas l'equivalent en java

    merci pour votre aide

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot=mot.replace(mot.charAt(i), chaine2.charAt(j));
    Sinon sans boucler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String mot = "ÀÁÄÅAzerty@rty General";
    mot=mot.replaceAll("[(À*Á*A*Â*Ã*Ä*Å*)]+","A");
    Et ce pour tous les groupes.
    PS:Si quelqu'un pouvait simplifier l'expression régulière.

  8. #8
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 40
    Par défaut
    Citation Envoyé par seriousme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot=mot.replace(mot.charAt(i), chaine2.charAt(j));
    Sinon sans boucler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String mot = "ÀÁÄÅAzerty@rty General";
    mot=mot.replaceAll("[(À*Á*A*Â*Ã*Ä*Å*)]+","A");
    Et ce pour tous les groupes.
    PS:Si quelqu'un pouvait simplifier l'expression régulière.

    Merci Seriousme de votre aide;
    voila a quoi ressemble maintenant la premiere partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    String mot = "ÀÁAsym@pthys General";
     
    System.out.println(mot);
     
    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");

  9. #9
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par seriousme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot=mot.replace(mot.charAt(i), chaine2.charAt(j));
    Sinon sans boucler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String mot = "ÀÁÄÅAzerty@rty General";
    mot=mot.replaceAll("[(À*Á*A*Â*Ã*Ä*Å*)]+","A");
    Et ce pour tous les groupes.
    PS:Si quelqu'un pouvait simplifier l'expression régulière.
    Je ne sais pas si c'est ce que veut kgadhi mais ton expression régulière remplace un groupe de plusieurs À &co par un et un seul A. Pour remplacer chaque À par un A :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String mot = "ÀÁÄÅAzerty@rty General";
    mot=mot.replaceAll("[ÀÁÂÃÄÅ]","A");
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  10. #10
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 40
    Par défaut
    Bonjour tous le monde et merci pour votre aide,

    J'ai enfin reussi à trouver une solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    // 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);

    et merci à vous tous pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Créer une chaîne de caractères formatée
    Par gege2061 dans le forum Télécharger
    Réponses: 0
    Dernier message: 01/12/2010, 10h16
  3. [XL-2003] Conserver le format d'une chaîne de caractères
    Par Z20500 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/07/2009, 09h42
  4. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo