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

API standards et tierces Java Discussion :

[string->HTML] Conversion d'une chaine en HTML


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Par défaut [string->HTML] Conversion d'une chaine en HTML
    Bonjour,

    Existe-il une méthode qui permetrait de convertir tous les caractères spéciaux d'une chaine dans leur format HTML (entity characters).

    Exemple :
    String maChaine = "Un texte contenant des < chevrons >";

    La méthode devrait me retourner :
    "Un texte contenant des &lt chevrons &gt"

    Je connais la méthode replaceAll() et je sais que je peux invoquer cette méthode pour chaque Entities Characters.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    maChaine = maChaine.replaceAll("<", "&lt");
    maChaine = maChaine.replaceAll(">", "&gt");
    etc...
    Ce qui n'est pas très élégant.

    Est-il possible par un seul appel d'effectuer toutes les convertions désirées en utilisant l'expression régulière appropriée.

    Si oui et du fait que je ne connais pas tres bien les expressions régulières, quelqu'un pourait-il m'indiquer une expression unique à utiliser par exemple pour convertir < en &lt > en &gt et ' en &quot.

    Merci d'avance.


    Jean-Marc

  2. #2
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    bonjour,
    non, tu ne pourras pas en un seul appel effectuer toutes les conversions, puisqu'il y a plusieurs expressions régulières à considérer. Par contre, si ça peut t'arranger, tu peux n'avoir qu'une seule instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maChaine = maChaine.replaceAll("<", "&lt").replaceAll(">", "&gt");
    Sinon, dans la mesure où les expressions régulières sont très simples (un seul caractère, qui plus est "standard"), pourquoi ne pas faire toi même la méthode de conversion ?
    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
    34
    35
     
    private String[][] htmlTags = {
      {"<", "&lt"},
      {">", "&gt"},
      {"'", "&quot"},
      ...
    };
     
    public String replaceHtmlTags(String in) {
      int offset = 0;
      int length = in.length();
      StringBuffer out = new StringBuffer(length);
     
      while (offset < length) {
        boolean htmlTagFound = false;
     
        for (int i = 0; i < htmlTags.length; i++) {
          String tag = htmlTags[i][0];
     
          if (in.regionMatches(offset, tag, 0, tag.length())) {
            out.append(htmlTags[i][1]);
            offset += tag.length();
            htmlTagFound = true;
            break;
          }
        }
     
        if (!htmlTagFound) {
          out.append(in.charAt(offset));
          offset++;
        }
      }
     
      return new String(out);
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Par défaut
    Merci pour ta réponse.

    Je vais la mettre en pratique.

    Bon week-end

    Jean-Marc

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

Discussions similaires

  1. [Encodage] Conversion d'une chaine en code html
    Par soufian1364 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2013, 13h21
  2. conversion d'une chaine en format html
    Par MisterMacPhisto dans le forum Langage
    Réponses: 3
    Dernier message: 04/06/2007, 11h04
  3. [VBA][EXCEL]Conversion d'une chaine en single
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/11/2005, 17h28
  4. conversion d'une chaine de caractère en int
    Par greg13 dans le forum C++
    Réponses: 3
    Dernier message: 25/08/2005, 16h18
  5. Conversion d'une chaine de char en numerique
    Par simone.51 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/03/2004, 16h47

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