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

avec Java Discussion :

Un String replace un peu compliqué


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Par défaut Un String replace un peu compliqué
    Bonjour,

    Je butte sur une difficulté concernant le String.replaceAll. J'ai une chaîne de caractères contenant un texte dans lequel il y a des balise HTML <p> et </p>, puis des pseudo tag entre crochet. Voici un exemple:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p>
    [tag]un texte quelconque, contenant éventuellement des balises HTML[/tag]
    </p>

    Je voudrais pouvoir supprimer ce type de chaîne de caractères (y compris les balises <p> et </p> qui sont associées) en conservant le reste.

    J'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String notes="<p>Début à garder</p><p>\n[tag]un texte quelconque, contenant éventuellement des balises HTML[/tag]\n</p><p>Le reste à garder aussi</p>";
     
    String regex="<p>.*\\[tag\\].*\\[/tag\\].*</p>";
    String s = notes.replaceAll(regex,"");
    System.out.println("Actual notes=\n{"+notes+"}\nreplacing by\n{"+s+"}");
    Mais ça ne marche pas, quelqu'un pourrait-il m'aider? Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex="(\\<.*?\\>)|(\\[.*?\\])";
    A+.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Par défaut
    Si je comprends bien cette formule ça va enlever toutes les balises HTML et toutes mes pseudo-balises entre crochets. C'est n'est pas du tout ce que je recherche. Seulement de supprimer une succession précise des ces balises et pseudo-balises, à savoir une balise <p>, suivi d'une nombre quelconque de caractères, suivi d'une pseudo-balise [tag], suivi d'un nombre quelconque de caractères, suivi de la pseudo-balise [/tag], suivi d'un nombre quelconque de caractères, suivi de la balise </p>. Autrement dit: "<p>" + ".*" + "[tag]" + ".*" + "[/tag]" + ".*" + "</p>".

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Tu veux dire supprimer la séquence <p>[tag]*[/tag]</p>?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex="(\\<p\\>\\s*\\[tag\\]).*(\\[\\/tag\\])\\s*(\\<\\/p\\>)";
    A+.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Désolé, tu voulais supprimer les <p>*[tag]*[/tag]*</p>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex="\\<p\\>.*\\[tag\\].*\\[\\/tag\\].*\\<\\/p\\>";

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Par défaut
    Merci, j'ai essayé et ça ne marche pas.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ce serait beaucoup plus simple avec un parser html (exemple : JSoup).

    Sinon, ce que voulait (je suppose) dire @Thelvin, c'est que "ça marche pas" ça ne nous dit pas grand chose et qu'il est préférable que tu nous dises ce qu'il se passe ou ce qu'il ne se passe pas, si ça génère une exception, ou si ça ne compile pas (et, donc, l’intitulé précis de l'erreur), ou quelles différences y a t-il entre le résultat que tu obtiens et celui que tu voudrais obtenir. Des informations qui nous permettent de te répondre sans avoir à se perdre en conjectures, ou à tenter de tester nous même ce qui est plutôt difficile vu qu'on n'a pas les données exactes avec lesquelles tu as testé !

    Comme solution avec expression régulières, éventuellement, s'il n'y a que des whitespaces (que \n par exemple) entre balise (ouvrante/fermante) p et tag, tu peux utiliser ça : <p>\\s*\\[tag\\].*\\[/tag\\]\\s*</p>.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [C#] Comment faire String.Replace, CaseInsensitive ?
    Par lolo_ici_et_la dans le forum C#
    Réponses: 3
    Dernier message: 17/03/2006, 10h06
  2. [String] Replace antislash
    Par daninho dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 03/02/2006, 14h11
  3. [C#] String.IndexOf ET String.Replace
    Par papouAlain dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/12/2005, 19h42
  4. [SQL - ORACLE] Requete un peu compliquée (pour moi)
    Par Worldofdada dans le forum Langage SQL
    Réponses: 15
    Dernier message: 03/11/2005, 08h25
  5. [string]replace
    Par nenoeil dans le forum Langage
    Réponses: 6
    Dernier message: 12/07/2004, 11h53

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