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 :

chaine folle (the crazy string)


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Juin 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 7
    Par défaut chaine folle (the crazy string)
    Hello,
    j'ai fait une appli contenant une liste et acceptant le drag and drop. Le but est de pouvoir "dragger" des images depuis un web browser et de les dropper dans la liste. Evidemment ce n'est pas si simple que ça: si l'image est un lien vers une page web, c'est le lien qui vient par defaut et non la source de l'image. J'ai donc du passer par les DataFlavor pour acceder aux objets qui m'interessent. Je vous donne les lignes de codes:

    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
     
    public boolean importData(TransferHandler.TransferSupport info) {
     
    for(DataFlavor flavor : info.getDataFlavors())
     {
     data = (String)t.getTransferData(DataFlavor.stringFlavor);
     if( flavor.isFlavorTextType() )
       {
       Object o = new Object();
       o = t.getTransferData( flavor );
     
       String s_object_string = new String();
       s_object_string = o.toString();
     
       if( isUrlOfImage( s_object_string ) ){ blablabla le code a faire }
       }
    }
    Pas complique. Le pb vient dans la fonction isUrlOfImage. Je vous donne le code qui affichage les incoherences:

    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
     
    protected boolean isUrlOfImage(String data) {
      String copy = new String( data );
      System.out.println( "stringDataR : " + copy + " len=" + copy.length() );
      int i_src = copy.indexOf("src");
      int i_jpg = copy.indexOf("jpg");
      System.out.println( "position of src : " + i_src + " jpg :" + i_jpg );
     
      char [] pc_curr = new char[4];
      for( int i=0; i<copy.length()-3; i++ ){
        copy.getChars(i, i+3, pc_curr, 0);
        String s_curr_string = new String( pc_curr );
       System.out.print( "|" + s_curr_string );
       }
    }
    Et voici 3 sorties différentes, avec 3 objets differents:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    objectToString: [B@da2cef
    stringDataR : [B@da2cef len=9 
    position of src : -1 jpg :-1 
    |[B@|B@d|@da|da2|a2c|2ce
    ici tout à fait normal!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    objectToString: http://kanda.tkl.iis.u-tokyo.ac.jp/~toyoda/cgi-bin/feedsearchtv.cgi?e=http://vicky.ti-da.net/e2292620.html
    stringDataR : http://kanda.tkl.iis.u-tokyo.ac.jp/~toyoda/cgi-bin/feedsearchtv.cgi?e=http://vicky.ti-da.net/e2292620.html len=106
    position of src : -1 jpg :-1                                                                                                   
    |htt|ttp|tp:|p:/|://|//k|/ka|kan|and|nda|da.|a.t|.tk|tkl|kl.|l.i|.ii|iis|is.|s.u|.u-|u-t|-to|tok|oky|kyo|yo.|o.a|.ac|ac.|c.j|.jp|jp/|p/~|/~t|~to|toy|oyo|yod|oda|da/|a/c|/cg|cgi|gi-|i-b|-bi|bin|in/|n/f|/fe|fee|eed|eds|dse|sea|ear|arc|rch|cht|htv|tv.|v.c|.cg|cgi|gi?|i?e|?e=|e=h|=ht|htt|ttp|tp:|p:/|://|//v|/vi|vic|ick|cky|ky.|y.t|.ti|ti-|i-d|-da|da.|a.n|.ne|net|et/|t/e|/e2|e22|229|292|926|262|620|20.|0.h|.ht|htm
    encore tout a fait normal.

    Et pour finir, quand vient la chaine qui m'interesse, evidemment ça ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    objectToString: <a linkindex="4" href="http://kanda.tkl.iis.u-tokyo.ac.jp/%7Etoyoda/cgi-bin/feedsearchtv.cgi?e=http://vicky.ti-da.net/e2292620.html"><img src="http://kanda.tkl.iis.u-tokyo.ac.jp/%7Etoyoda/feed-test/getimages/otona-grico-4/318.jpg" height="75" width="100"></a>                                               
    stringDataR : <a linkindex="4" href="http://kanda.tkl.iis.u-tokyo.ac.jp/%7Etoyoda/cgi-bin/feedsearchtv.cgi?e=http://vicky.ti-da.net/e2292620.html"><img src="http://kanda.tkl.iis.u-tokyo.ac.jp/%7Etoyoda/feed-test/getimages/otona-grico-4/318.jpg" height="75" width="100"></a> len=518                                                  
    position of src : -1 jpg :-1                                                                                                                                         
    |<a|a|a | | l|l|li|i|in|n|nk|k|ki|i|in|n|nd|d|de|e|ex|x|x=|=|="|"|"4|4|4"|"|" | | h|h|hr|r|re|e|ef|f|f=|=|="|"|"h|h|ht|t|tt|t|tp|p|p:|:|:/|/|//|/|/k|k|ka|a|an|n|nd|d|da|a|a.|.|.t|t|tk|k|kl|l|l.|.|.i|i|ii|i|is|s|s.|.|.u|u|u-|-|-t|t|to|o|ok|k|ky|y|yo|o|o.|.|.a|a|ac|c|c.|.|.j|j|jp|p|p/|/|/%|%|%7|7|7E|E|Et|t|to|o|oy|y|yo|o|od|d|da|a|a/|/|/c|c|cg|g|gi|i|i-|-|-b|b|bi|i|in|n|n/|/|/f|f|fe|e|ee|e|ed|d|ds|s|se|e|ea|a|ar|r|rc|c|ch|h|ht|t|tv|v|v.|.|.c|c|cg|g|gi|i|i?|?|?e|e|e=|=|=h|h|ht|t|tt|t|tp|p|p:|:|:/|/|//|/|/v|v|vi|i|ic|c|ck|k|ky|y|y.|.|.t|t|ti|i|i-|-|-d|d|da|a|a.|.|.n|n|ne|e|et|t|t/|/|/e|e|e2|2|22|2|29|9|92|2|26|6|62|2|20|0|0.|.|.h|h|ht|t|tm|m|ml|l|l"|"|">|>|><|<|<i|i|im|m|mg|g|g | | s|s|sr|r|rc|c|c=|=|="|"|"h|h|ht|t|tt|t|tp|p|p:|:|:/|/|//|/|/k|k|ka|a|an|n|nd|d|da|a|a.|.|.t|t|tk|k|kl|l|l.|.|.i|i|ii|i|is|s|s.|.|.u|u|u-|-|-t|t|to|o|ok|k|ky|y|yo|o|o.|.|.a|a|ac|c|c.|.|.j|j|jp|p|p/|/|/%|%|%7|7|7E|E|Et|t|to|o|oy|y|yo|o|od|d|da|a|a/|/|/f|f|fe|e|ee|e|ed|d|d-|-|-t|t|te|e|es|s|st|t|t/|/|/g|g|ge|e|et|t|ti|i|im|m|ma|a|ag|g|ge|e|es|s|s/|/|/o|o|ot|t|to|o|on|n|na|a|a-|-|-g|g|gr|r|ri|i|ic|c|co|o|o-|-|-4|4|4/|/|/3|3|31|1|18|8|8.|.|.j|j|jp|p|pg|g|g"|"|" | | h|h|he|e|ei|i|ig|g|gh|h|ht|t|t=|=|="|"|"7|7|75|5|5"|"|" | | w|w|wi|i|id|d|dt|t|th|h|h=|=|="|"|"1|1|10|0|00|0|0"|"|">|>|><|<|</|/|/a|a|a>
    Remarquez la longueur délirante de 518 caractères, alors que la chaine n'en fait pas plus de 300. Et l'affichage des morceaux de 3 caractères, qui fait tantôt 1 tantôt 2, mais jamais 3.

    J'ai essayé différentes fonctions de chaines, la plupart donne des résultats aberrants. J'ai juste réussi à virer les " et les espaces de ma chaine avec la méthode replace, qui elle marche, j'ai ensuite essayé dessus, mais pas mieux.

    Alors, pb de o.toString()? Un peu violent? Pb 'accès mémoire. Je ne vois pas. Si vous voyez merci de m'aider Et désolé pour ce long post, les affichages sont un peu indigestes.

    Sebastien

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    A priori je ne vois pas l'intérêt de ce o.toString().

    Il vaut mieux faire o.getClass() et se renseigner sur ce qu'on peut faire d'un objet de cette classe. Éventuellement si ce n'est pas une classe connue, regarder sa hiérarchie de superclasses, et énumérer les interfaces qu'elle implémente.

    o.getClass().getName()
    o.getClass().getSuperclass()
    o.getClass().getInterfaces()

    Tout ça devrait mieux t'aider à voir quoi faire de ton objet, qu'un simple toString().

    (Ah, au fait, tes new String() et new Object() sont inutiles et créent des objets pour rien. Ne le fais plus.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/08/2012, 09h13
  2. missing '|' in the wildcard string!
    Par Rmc_Kay dans le forum wxPython
    Réponses: 1
    Dernier message: 17/03/2012, 01h30
  3. [XL-2007] Fonction extraction d'une chaine hors d'un string
    Par freddyev dans le forum Excel
    Réponses: 3
    Dernier message: 16/11/2011, 23h53
  4. Affecter une chaine type SQL à un String
    Par obtuli31 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 31/05/2011, 10h24
  5. [Débutant][String] Opérations sur une chaîne
    Par gandalf_le_blanc dans le forum Général Java
    Réponses: 8
    Dernier message: 08/06/2004, 11h59

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