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 :

[String]comparaison de différence


Sujet :

Langage Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut [String]comparaison de différence
    Bonjour à tous,

    j'ai 2 String.
    La premmière est la source, sur laquelle j'effectue un traitement, et ensuite j'annule le traitement.
    J'obtient en résultat une String sensée être identique à la source.

    Problème: Elles ne sont pas identiques.

    pour debugger, je souhaiterais pouvoir les comparer, et obtenir les différences en console.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    source = "Je m'apelle Regis"
    Résultat = "Je m'ap#elle Regis"
     
    Je récupererais : "ap#elle"
    Une idée ?

  2. #2
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Heu tu veux dire comment faire un system out ?
    Si c'est ca:

    System.out.println(source) --> stdout
    System.err.println(source) --> stderr


    Tu n'as pas de debugger ?
    Utilise eclipse c'est gratuit et terrriblement puissant.

    -----------------------------------------------
    Steve Hostettler
    ze_key@hotmail.com / www.zekey.net

  3. #3
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    J'utilise Eclipse.

    Ce n'est pas un bugg proprement dit, ou du moins j'essaye de savoir où ça pourrait merder.

    Voila un exemple réel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String source = ".úC-¶ŠÛÍN‚êýÍo§»sýøK?íµk9.‚ã*¾¶nS&-Oª=Ã’kP,D«¦¿»ø ½‘ûՁ&¡gÞ†öp²5Qq@ÜbKƒ@þ±?A+Hh¹ˆeœ­âÚZœ% ¹£pÿ
    uÏvÊÁs wØÙrB®Âà%uFüŸÿÑ»³]&<&SH‚¤V…ØÒA²úƒHj!Ï­Äío«T³cÿ­Ú}2ÈÏé·úÿ­ÍàÉEðýn±¦Ýí°ÖçÇÐn»€ÅÕìþq»ï}h­¸-2ÇS?œaã_Ý1¹^ég
    ™lm/hq,µå¬ˆiÅßÍîÿ";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String resultat = ".úC-¶ŠÛÍN‚êýÍo§»sýøK?íµk9?.‚ã*¾¶nS&-Oª=Ã’kP,D«¦¿»ø ½‘ûÕ?&¡gÞ†öp²5Qq@ÜbKƒ@þ±?A+Hh¹ˆeœ­âÚZœ% ¹£pÿ
    uÏvÊÁs wØÙrB®Âà%uFüŸÿÑ»³]&<&S?H‚¤?V…ØÒA²úƒHj!Ï­Äío«T³cÿ­Ú}2ÈÏé·úÿ­ÍàÉEðýn±¦Ýí°ÖçÇÐn»€ÅÕìþq»ï}h­¸-2ÇS?œaã_Ý1¹^ég
    ™lm?/hq,µå¬ˆi?ÅßÍîÿ";
    Comme vous pouvez le constater, certains caractère sont remplacés par "?", et j'ignore pourquoi.

  4. #4
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    On part du principe que les deux chaines de caractères font la même taille avant et après traitement

    tu utilises la méthode indexOf avec le caractère espace " " et tu récupères l'index du premier espace. Ensuite subString entre 0 et cet index pour chaque chaine, en ayant pris soin de faire un test sur ca valeur.

    Puis un string1.equals(string2) si c'est true, on continue, sinon un sysout

    continuer, c'est remplacer la valeur 0 par index+1 et chercher le prochain index

    voila en gros, faut adapter si tes chaines changent de taille

    edit : bon alors au vu du post que tu as fait en meme temps que moi, je vais adapter ma réponse

  5. #5
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    J'ai comprit d'où vient le problème, mais pas la cause (c'est déjà ça!):

    la lecture des données est mauvaise.
    Autrement dit, la restitution après traitement et annulation traitement, elle, est bonne.

    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
    			File in = new File(classPath);
    			String name = in.getName();
    			String nom = "Cryptor-"+name;
    			File out = new File(in.getParent(),nom);
     
    			BufferedInputStream entree= new BufferedInputStream(new FileInputStream(in)); 
    			FileWriter fi = new FileWriter(out); 
     
    			int read = -1; 
    			byte[] buffer = new byte[(int) in.length()]; 
    			while ((read = entree.read(buffer, 0, buffer.length)) != -1) 
    			{ 
    				donnees = new String(buffer, 0, read); 
     
    			} 
    			System.out.println(donnees);
    La lecture de ces données avant traitement me donne déjà les caractère "?" à la place du caractère original !

  6. #6
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Désolé je n'avais pas compris ce que tu voulais.
    Donc ton but c'est de faire un diff en quelque sorte ?

    -----------------------------------------------
    Steve Hostettler
    ze_key@hotmail.com / www.zekey.net

  7. #7
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    non en fait il cherche à corriger son bug de lecture, ce qui est plus simple que de faire du code pour chercher les différences alors qu'il ne devrait pas y en avoir

    Ca ne serait pas un problème d'encoding ?

  8. #8
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par guipom
    Ca ne serait pas un problème d'encoding ?
    Non, je pense que c'est un problème lié au choix de l'objet qui lit les données...
    Le code que j'ai donné ne me lit pas tous les caractères et remplace
    .úC-¶Š\ÐÛÍN‚êýÍo§»sýøK?íµk9.‚ã*...
    par :
    .úC-¶Š\ÐÛÍN‚êýÍo§»sýøK?íµk9?.‚ã*...
    Autrement dit, le "9" est lu "9?" par mon BufferedInputStream !

  9. #9
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    De toutes facons ce qui est sûr c'est qu'il est bizarre de mettre en place une lecture bufferisée pour lire un fichier en un seul bloc ... maintenant je ne suis pas sur que ca soit la base du problème, mais ca y contribue peut etre

    Essaye ce petit bout de code :

    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
    import java.io.*;
     
    public class LectureFichier
    {
      // Méthode lancée à l'appel de l'instruction :
      // java LectureFichier nomFichier nombreCaracteres
      public static void main (String [ ] args)
      {
        try
        {
          // Ouverture du fichier passé en paramètre dans la ligne de commande
          InputStream fluxFichier = new FileInputStream (args [0]);
     
          // Lecture des n premiers octets du fichier. n est passé en paramètre
          byte contenuFichier [ ] = new byte [Integer.parseInt (args [1])];
          fluxFichier.read (contenuFichier);
     
          // Ecriture sur la sortie standard des octets lus convertis
          // en une chaîne de caractères
          System.out.println (new String (contenuFichier, 0));
     
          // Fermeture du fichier
          fluxFichier.close ();
        }
        catch (IOException e)
        {
          // Exception déclenchée si un problème survient pendant l'accès au fichier
          System.out.println (e);
        }
      }
    }
    premier argument, le nom du fichier lu, deuxième, le nombre de charactères lus (enfin si je me souviens bien)

    est ce que la sortie est identique au fichier d'origine.

    Si oui, alors c'est le passage au buffer qui coince

  10. #10
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut

    Même problème avec le code que tu me donnes, données lues:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .úC-¶?\ÐÛÍN?êýÍo§»sýøK?íµk9?...
    Le caractère "9" à la fin est "" sur l'original, et non "?".

    Quelle que soit l'extension du fichier, le problème reste le même.
    Si je copie le texte de mon exemple dans mon post précedent dans un fichier .txt, et que j'utilise un FileReader, problème identique.

  11. #11
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    pourrais-tu, si ce fichier n'est pas confidentiel, le rendre disponible afin que je teste de mon coté ?

    je suis quand meme pérsuadé qu'il y a derrière tout ca un problème d'encoding

  12. #12
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par guipom
    pourrais-tu, si ce fichier n'est pas confidentiel, le rendre disponible afin que je teste de mon coté ?

    je suis quand meme pérsuadé qu'il y a derrière tout ca un problème d'encoding
    copies ce texte dans un fichier .txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .úC-¶Š\ÐÛÍN‚êýÍo§»sýøK?íµk9.‚ã*¾¶nS&-Oª=Ã’kP,D«¦¿»ø ½‘ûՁ&¡gÞ†öp²5Qq@ÜbKƒ@þ±?A+Hh¹ˆeœ­âÚZœ% ¹£pÿ
    uÏvÊÁs wØÙrB®Âà%uFüŸÿÑ»³]&<&SH‚¤V…ØÒA²úƒHj!Ï­Äío«T³cÿ­Ú}2ÈÏé·úÿ­ÍàÉEðýn±¦Ýí°ÖçÇÐn»€ÅÕìþq»ï}h­¸-2ÇS?œaã_Ý1¹^ég
    ™lm/hq,µå¬ˆiÅßÍîÿ

  13. #13
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    si je te le demandais, c parce que j'ai des petits carrés quand je copie/colle

  14. #14
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par guipom
    si je te le demandais, c parce que j'ai des petits carrés quand je copie/colle
    C'est exactement le caractère qu'il y a...
    texte:
    .úC-¶Š\ÐÛÍN‚êýÍo§»sýøK?íµk9.‚ã*¾¶nS&-Oª=Ã’kP,D«¦¿»ø ½‘ûÕ&¡gÞ†öp²5Qq@ÜbKƒ@þ±?A+Hh¹ˆeœ*âÚZœ% ¹£pÿ
    uÏvÊÁs wØÙrB®Âà%uFüŸÿÑ»³]&<&SH‚¤V…ØÒA²úƒHj!Ï*Äío«T³cÿ*Ú}2È Ïé·úÿ*ÍàÉEðýn±¦Ýí°ÖçÇÐn»€ÅÕìþq»ï}h*¸-2ÇS?œaã_Ý1¹^ég
    ™lm/hq,µå¬ˆiÅßÍîÿ

  15. #15
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    en entrée j'ai ce que tu m'as donné

    et en sortie :

    úC-¶?\ÐÛÍN?êýÍo§»sýøK?íµk9?.?ã*¾¶nS&-Oª=Ã?kP,D«¦¿»ø ½?ûÕ?&¡gÞ?öp²5Qq@ÜbK?@þ±?A+Hh¹?e?*âÚZ?% ¹£pÿ
    uÏvÊÁs wØÙrB®Âà%uFü?ÿÑ»³]&<&S?H?¤?V?ØÒA²ú?Hj!Ï*Äío«T³cÿ*Ú}2È Ïé·úÿ*ÍàÉEðýn±¦Ýí°ÖçÇÐn»?ÅÕìþq»ï}h*¸-2ÇS??aã_Ý1¹^ég
    ?lm?/hq,µå¬?i?ÅßÍîÿ

    Je confirme donc qu'il y a un problème, je vais réfléchir au pourquoi si j'ai un peu de temps

  16. #16
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class TestString 
    {
     
     
     
    	public static void main(String[] args) 
    	{
    		String donnee = ".úC-¶Š\\ÐÛÍN‚êýÍo§»sýøK?íµk9.‚ã*¾¶nS&-Oª=Ã’kP,D«¦¿»ø ½‘ûՁ&¡gÞ†öp²5Qq@ÜbKƒ@þ±?A+Hh¹ˆeœ­âÚZœ% ¹£pÿuÏvÊÁs wØÙrB®Âà%uFüŸÿÑ»³]&<&SH‚¤V…ØÒA²úƒHj!Ï­Äío«T³cÿ­Ú}2ÈÏé·úÿ­ÍàÉEðýn±¦Ýí°ÖçÇÐn»€ÅÕìþq»ï}h­¸-2ÇS?œaã_Ý1¹^ég™lm/hq,µå¬ˆiÅßÍîÿ";
    		System.out.println(donnee);
    	}
    }

    en sortie la String change même avec ce code!!!

  17. #17
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    Si ca n'est pas indiscret, d'ou te vient cette chaine de caractères assez étrange ?

  18. #18
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par guipom
    Si ca n'est pas indiscret, d'ou te vient cette chaine de caractères assez étrange ?
    D'un fichier .jpg...
    mais même si tu copie ce "texte" dans un fichier texte quelconque, le problème reste le même, même avec la classe TestString, je ne vois pas en quoi le caractère est modifié entre l'initialisation de la String et l'affichage en console !

  19. #19
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Encore mieux et plus parlant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String test = "k9";
    System.out.println(test);
    console:


    Et c'est même pire que ça !
    J'ai été sur un autre forum pour poster ce même code, et le caractère n'apparait pas dans mon post !
    A la place il y a un espace!

  20. #20
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    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
     
    public class TestString 
    {
     
     
     
    	public static void main(String[] args) 
    	{
     
    		String test = "k9";
     
    		test = test.replaceAll("","");
     
    		System.out.println(test);
     
     
    	}
    }
    console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
    ?
    ^
    	at java.util.regex.Pattern.error(Unknown Source)
    	at java.util.regex.Pattern.sequence(Unknown Source)
    	at java.util.regex.Pattern.expr(Unknown Source)
    	at java.util.regex.Pattern.compile(Unknown Source)
    	at java.util.regex.Pattern.<init>(Unknown Source)
    	at java.util.regex.Pattern.compile(Unknown Source)
    	at java.lang.String.replaceAll(Unknown Source)
    	at TestString.main(TestString.java:25)
    Exception in thread "main"

    Je ne comprend plus du tout là...

Discussions similaires

  1. Comparaison et différence ErdPro/ BIRT
    Par Istvan_75 dans le forum BIRT
    Réponses: 1
    Dernier message: 29/11/2010, 11h08
  2. [String]Comparaison de chaine
    Par Guybrush dans le forum Langage
    Réponses: 10
    Dernier message: 04/08/2007, 04h04
  3. [javascript] objet string + comparaison
    Par herve70 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/11/2006, 16h19
  4. [String] Comparaison de chaînes ?
    Par toto019 dans le forum Langage
    Réponses: 4
    Dernier message: 21/07/2006, 23h18
  5. Réponses: 4
    Dernier message: 05/07/2004, 13h17

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