Partage
  • Partager sur Facebook
  • Partager sur Twitter

Suppression des accents sur les lettres majuscules

    12 octobre 2021 à 17:57:09

    Bonjour,

    Je cherche un moyen pour supprimer les accents sur les majuscules uniquement dans une chaine de caractères.

    J'ai ce code là :

    public static String stripAccents(String s) 
    {
        s = Normalizer.normalize(s, Normalizer.Form.NFD);
        s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
        return s;
    }

    Ce code supprime tout les accents que ça soit les lettres majuscules ou minuscules.

    Voici un exemple de ce que j'essaie de faire :

    - in : azertyéèàùazerty;AZERTYÀÈÉÙazèrty

    - out : azertyéèàùazerty;AZERTYEEEUazèrty

    Est-ce que c'est possible de supprimer les accents uniquement pour les lettres majuscules svp ?

    Merci d'avance,

    • Partager sur Facebook
    • Partager sur Twitter
      13 octobre 2021 à 0:41:45

      Hello,

      possible oui, mais c'est plus compliqué que ce à quoi tu t'attends.

      Primo, pour ce genre de choses, il vaut mieux faire la liste des caractères que tu veux remplacer en d'autres caractères, et appliquer les transformation.

      Pourquoi, parce qu'avec ton approche, si quelqu'un utilise un jour ton programme en japonais, le programme a tôt fait de transformer le message "je vous remercie" en "je vous sodomise". Je simplifie, mais l'histoire vraie n'est pas plus rassurante.

      Peut-être que toi tu ne touches qu'aux majuscules et donc que ça ne modifie pas le japonais, mais avec d'autres systèmes d'écriture tu n'en sais rien. D'ailleurs en général, modifier les textes ce n'est anodin que dans les cas auxquels on a pensé. C'est assez rare qu'on sache réellement ce qu'on fait.

      Deuzio, en 2008 et après, il est moins tolérable d'être incompatible avec unicode, ce qui veut dire qu'il faut être capable de traiter pareil "É" et "E avec un accent aigu".

      L'un est fait de un caractère et l'autre d'une suite de deux caractères. C'est faisable, mais il faut en retenir que modifier les textes ça demande de savoir gérer beaucoup de choses. Ce qui veut dire du code étonnamment compliqué, qui ne s'adapte pas facilement à un nouveau besoin comme se limiter aux majuscules, et qui nécessite d'être bien sûr d'exactement ce dont tu as besoin.

      • Partager sur Facebook
      • Partager sur Twitter
        13 octobre 2021 à 9:47:52

        Bonjour Kumesana,

        Merci pour  ta réponse complète. Si j'ai bien compris, il vaut mieux faire mon propre code pour faire cette conversion. Dans un premier temps, je me renseigne sur les caractères possible dans le fichier entant (langue française normalement) puis je fais une liste des caractères que je veux remplacer. Donc, on aura un code simple du style :

        replace("À","A")
        replace("È","E") 
        etc 

        Est-ce que c'est suffisant ? Y a t-il un site où je pourrais trouver une liste de toutes les lettres accentuées de la langue française ?

        Merci d'avance,

        • Partager sur Facebook
        • Partager sur Twitter

        Suppression des accents sur les lettres majuscules

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown