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 :

[regex] Epuration StackTrace pour fichier CSV


Sujet :

Langage Java

  1. #1
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut [regex] Epuration StackTrace pour fichier CSV
    Bonjour tout le monde,

    J'ai un petit souci, je récupère des stackTrace de nature différentes (java et logicielle) et celles-ci doivent être formatées pour tenir dans une cellule de fichier CSV (lu sous Excel dira-t-on).

    Voici le code "bourrin" (je l'avoue) de mon epuration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    newStkJava = stkJava.replaceAll("at(.)*\\)","");
    newStkJava = newStkJava.replaceAll(";","").replaceAll("\n","").replaceAll("\r","").replaceAll("\t"," ");
    newStkLog = stkLog.replaceAll("at(.)*\\)","");
    newStkLog =  newStkLog.replaceAll(";","").replaceAll("\n","").replaceAll("\\/n","").replaceAll("\r","").replaceAll("\t"," ");
    Désolé, ce code est moche mais je ne maitrise pas assez les expressions régulières pour affiner ces quelques appels. En gros :
    1- je veux virer tous les caractères générant une nouvelle cellule (';') ou une nouvelle ligne (\n,\r\n)
    2- je veux virer les tabulations (\t)
    3- je veux virer les lignes contenant "at.....);"

    Cela fonctionne donc pour la stacktrace java StkJava mais je rencontre un problème avec l'autre stacktrace (StkLog qui fait apparaitre (en base puisque ces traces sont stockées en base) un /n ... qui génére un saut de ligne sous Excel et que je ne parviens pas a supprimer (les essais avec \\/n et /n ne semble pas faire grand chose )


    Voila, donc si vous aviez une petite aide :
    1- pour virer ces /n
    2- pour améliorer ce code en une seule et même expression, ca pourrait m'arranger

    Je suis tout ouïe !

    Merci d'avance à ceux qui s'y intéresseront

  2. #2
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Citation Envoyé par BizuR
    Voila, donc si vous aviez une petite aide :
    1- pour virer ces /n
    T'es sûr que c'est pas \n ???

    Pour virer des /n, l'expression régulière est me semble-t-il /n ; je m'étonne que cela ne marche pas ?

    Pour virer des \n, l'expression régulière est \\n, ce qui est un peu plus compliqué, et ce qui donne en java, c'est un peu plus sioux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p = Pattern.compile("\\\\n");
    Cela ne s'invente pas.


    Citation Envoyé par BizuR
    2- pour améliorer ce code en une seule et même expression, ca pourrait m'arranger
    Je te conseille d'expérimenter avec des outils pour ça. Il existe des petits logiciels avec lesquels tu entres la chaîne de base, l'expression régulière et pouf ! ils te donnent le résultat. Il y en a sous forme de plugin dans tous les environnements de développement, comme jEdit ou Netbeans, et il y a même des langages de scripts comme le beanshell, très pratiques pour ça.

    Et il y a l'excellent tutoriel de développez.com : Les expression régulières avec l’API Regex de Java.

  3. #3
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Salut et merci pour ta réponse tout d'abord.

    Pour virer les \n, je n'ai apparemment pas de souci avec "\n" plutôt qu'avec "\\\\n" ... en tout cas, le problème semble résolu avec la trace java qui reste dans une seule et même cellule à présent. Je te remercie tout de même pour le conseil et vais aller regarder cela lundi =)...

    Pour le /n je suis assez étonné car sur un site (pitetre la FAQ DVP d'ailleurs) j'ai cru comprendre qu'en regex, le / était un caractère réservé ... (d'ou ma tentative d'échappement mais sans succès -_-')

    En tout cas, la trace logicielle, elle, continue de prendre plusieurs cellules malgré les mêmes (voire plus complètes) modifications que je fais dessus. En regardant la chaine de caractères en base de données, j'ai des champs /n qui viennent se positionner là où justement les retours lignes sont constatés... enfin après, cela vient peut etre d'un affichage spécifique (modif des \n en /n pour rester sur une seule ligne) du logiciel Squirrel ...

    J'essaierai avec tes conseils lundi et tiendrai tout le monde au courant.
    Merci encore

Discussions similaires

  1. [RegEx] Regex pour créer fichier CSV
    Par ouarzazate1 dans le forum Langage
    Réponses: 1
    Dernier message: 08/12/2013, 02h51
  2. [XL-2010] Besoin d'un coup de main pour fichier CSV
    Par osharko dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2012, 15h37
  3. requête sql pour fichier csv qui foire
    Par frboyer dans le forum Langage
    Réponses: 2
    Dernier message: 19/05/2009, 16h05
  4. [CSV] recherche d'un type MIME pour fichier CSV
    Par clavier12AZQSWX dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2009, 18h11
  5. [Excel] séparateur pour les fichiers csv
    Par drinkmilk dans le forum Excel
    Réponses: 2
    Dernier message: 27/08/2005, 14h21

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