Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2935 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Probleme avec "\n" lors d'un String.split(";")

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Probleme avec "\n" lors d'un String.split(";")

n°1134675
karamba38
Posté le 29-06-2005 à 13:51:45  profilanswer
 

Bonjour,
 
J'ai un probleme avec mon programme qui fait du split(";" ) sur un texte que je copie et colle sur un TextArea.
En fait, mon texte que je colle sur mon TextArea est formaté comme suit

Citation :

num1;ID1;num1a;num1b
num2;ID2;num2a;num2b
....
numX;IDX;numXa;numXb


 
Ce que je fais :

Code :
  1. public void creationMilieu (String s){
  2.   String[] tokens = s.split(";" );
  3.          int t = tokens.length;
  4.   System.out.println(t);
  5.   for (int i=0; i<t; i++){
  6.    System.out.println(tokens[i] +  "   <=== Numero " + i);
  7.   }


 
Ce qu'il me donne :

Code :
  1. 25
  2. 1   <=== Numero 0
  3. hav0c   <=== Numero 1
  4. 3   <=== Numero 2
  5. 30523   //j'ai vu que ca venais du \n
  6. 2   <=== Numero 3
  7. polux   <=== Numero 4
  8. 2   <=== Numero 5
  9. 24789   // Idem
  10. 3   <=== Numero 6
  11. domit   <=== Numero 7
  12. 1   <=== Numero 8
  13. 8408    // Idem
  14. 4   <=== Numero 9
  15. TiGeR_Bl_AcK   <=== Numero 10
  16. 1   <=== Numero 11
  17. 7127    // Idem
  18. 5   <=== Numero 12
  19. andy   <=== Numero 13
  20. 0.5   <=== Numero 14
  21. 4905
  22. 6   <=== Numero 15
  23. just   <=== Numero 16
  24. 0.5   <=== Numero 17
  25. 2825
  26. 7   <=== Numero 18
  27. zioud   <=== Numero 19
  28. 0.5   <=== Numero 20
  29. 1940
  30. 8   <=== Numero 21
  31. serial   <=== Numero 22
  32. 0.5   <=== Numero 23
  33. 1799   <=== Numero 24


 
Résultat j'ai fait un :
       

Code :
  1. s = s.replaceAll("\n", ";" );


avant de spliter ma String....
au final ça donne d'autre chose mais toujours pas ce que je cherche:

Code :
  1. 32
  2. 1   <=== Numero 0
  3. hav0c   <=== Numero 1
  4. 3   <=== Numero 2
  5.    <=== Numero 3  //heuuu où est mon num1c?
  6. 2   <=== Numero 4
  7. polux   <=== Numero 5
  8. 2   <=== Numero 6
  9.    <=== Numero 7  // Idem
  10. 3   <=== Numero 8
  11. domit   <=== Numero 9
  12. 1   <=== Numero 10
  13.    <=== Numero 11  // Idem
  14. 4   <=== Numero 12
  15. TiGeR_Bl_AcK   <=== Numero 13
  16. 1   <=== Numero 14
  17.    <=== Numero 15
  18. 5   <=== Numero 16
  19. andy   <=== Numero 17
  20. 0.5   <=== Numero 18
  21.    <=== Numero 19
  22. 6   <=== Numero 20
  23. just   <=== Numero 21
  24. 0.5   <=== Numero 22
  25.    <=== Numero 23 
  26. 7   <=== Numero 24
  27. zioud   <=== Numero 25
  28. 0.5   <=== Numero 26
  29.    <=== Numero 27
  30. 8   <=== Numero 28
  31. serial   <=== Numero 29
  32. 0.5   <=== Numero 30
  33. 1799   <=== Numero 31


 
quand je refais un autre traitement sur mon tableau pour l'afficher directement alors là je piges pas non plus ça me donne les numXc mais plus les premiers numX....

Code :
  1. hav0c 3 30523
  2. i = 0
  3.   polux 2 24789
  4. i = 4
  5.   domit 1 8408
  6. i = 8
  7.   TiGeR_Bl_AcK 1 7127
  8. i = 12
  9.   andy 0.5 4905
  10. i = 16
  11.   just 0.5 2825
  12. i = 20
  13.   zioud 0.5 1940
  14. i = 24
  15. 8 serial 0.5 1799  // C'est marrant lui ca me le donne mon num8 ...
  16. i = 28


Message édité par karamba38 le 30-06-2005 à 15:43:38
mood
Publicité
Posté le 29-06-2005 à 13:51:45  profilanswer
 

n°1138364
karamba38
Posté le 02-07-2005 à 21:13:41  profilanswer
 

Un ami a cherché avec moi et a trouvé d'où venais le problème.
Visiblement il n'y avait pas qu'un probleme de "\n" mais aussi un problème de "Line Feed" char c = 10; en gros.
Il fallait aussi que je l'enleve...
 
Par contre je sais toujours pas d'où il vient surtout sur un copier coller basique de texte donné via une requete SQL :)
 
M'enfin voilà une réponse pour ceux qui rencontrerais ce probleme.

n°1138365
Taz
bisounours-codeur
Posté le 02-07-2005 à 21:15:37  profilanswer
 

fait un strip()

n°1138367
karamba38
Posté le 02-07-2005 à 21:19:15  profilanswer
 

J'ai essayer d'avoir la doc du strip mais j'ai rien... ça a était implémenté dans la JDK 1.5 ou elle y est aussi cette class dans la 1.4?

n°1138371
Taz
bisounours-codeur
Posté le 02-07-2005 à 21:24:58  profilanswer
 

merde, c'est .trim() en java :)

n°1138383
karamba38
Posté le 02-07-2005 à 21:39:09  profilanswer
 

je pige pas... :/
La java doc explique bien ce que ca devrait retourné mais visiblement il ne prends pas en compte le "line Feed" je pense que trim (si j'ai bien compris ce que marqué la java doc) ne change/n'affiche que tes caractères au dessus de 20 en décimal... hors "Line Feed" = 10 et '\n'=13 ..
donc ton trim() n'a pas l'air de marché pour ce que je demande.

n°1138384
Taz
bisounours-codeur
Posté le 02-07-2005 à 21:39:56  profilanswer
 

Code :
  1. [21:39:32](AC 96%)[pts/2][~/Code/Java][#23]
  2. benoit@ibook >>> cat trim_split.java
  3. public class trim_split
  4. {
  5.     public static void split(String s)
  6.     {
  7.         String[] tokens = s.trim().split(";" );
  8.         for (int i = 0; i < tokens.length; i++) {
  9.             System.out.println("#" + i + "\"" + tokens[i] + "\"" );
  10.         }
  11.     }
  12.     public static void main(String[] args)
  13.     {
  14.         split("a;b;c;d;e\n" );
  15.     }
  16. }
  17. [21:39:34](AC 96%)[pts/2][~/Code/Java][#24]
  18. benoit@ibook >>> jikes-kaffe trim_split.java
  19. [21:39:38](AC 96%)[pts/2][~/Code/Java][#25]
  20. benoit@ibook >>> kaffe trim_split
  21. #0"a"
  22. #1"b"
  23. #2"c"
  24. #3"d"
  25. #4"e"

n°1138395
karamba38
Posté le 02-07-2005 à 21:50:57  profilanswer
 

je viens de commenté le code où je remplace mon "line feed"
c'est à dire :

Code :
  1. char c=13;
  2.  String s2="";
  3.  s2+=(char)c;
  4.  c=10;
  5.  s2+=(char)c;
  6.  s = s.replaceAll(s2, ";" );
  7.  c=10;
  8.  s2="";
  9.  s2+=(char)c;
  10.  s = s.replaceAll(s2, ";" );


et j'ai mis un  
String[] tokens = s.trim().split(";" );
résultat ca foir quand meme :
 

Citation :

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException:
 19
        at Scores.creationMilieu(Scores.java:91)
        at Scores.actionPerformed(Scores.java:59)
        at java.awt.Button.processActionEvent(Button.java:388)
        at java.awt.Button.processEvent(Button.java:356)
        at java.awt.Component.dispatchEventImpl(Component.java:3955)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
 
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
 
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)



Message édité par karamba38 le 02-07-2005 à 21:51:41
n°1138398
Taz
bisounours-codeur
Posté le 02-07-2005 à 21:53:56  profilanswer
 

ben c'est ton usage de tokens qui est sans doute pourri.
 
 
comme tes cast de char en char ...

n°1138405
karamba38
Posté le 02-07-2005 à 22:03:14  profilanswer
 

je suis d'accord que le code pour virer les line Feed est pas top, mais bon, il m'a permis de virer mes problemes (merci quand meme a mon pote qui avait fait ça :p)  
Sinon l'usage de tokens c'est tout simplement dans une boucle for...
 
Rien de bien sorcier surtout rien qui pourrais me faire avoir des erreurs comme celles ci...

mood
Publicité
Posté le 02-07-2005 à 22:03:14  profilanswer
 

n°1138407
Taz
bisounours-codeur
Posté le 02-07-2005 à 22:06:50  profilanswer
 

ben tu vois mon code, ça marche.

n°1138410
karamba38
Posté le 02-07-2005 à 22:15:47  profilanswer
 

dans le tiens tu fais pas de copier coller d'un texte dans un TextArea non plus ;) ça peut venir de là non? vu que je fais le traitement apres le collage du texte dans le TextArea et apres clique sur mon bouton Validez....
 
Là toi tu prends juste une String banale bien définie et non variable : "a;b;c;d;e\n"
Je comprends bien qu'il n'y ait pas d'erreur avec ton programme ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Probleme avec "\n" lors d'un String.split(";")

 

Sujets relatifs
problème de script avec liaison base de donnéeProblème de compilation de programmes de tri avec portland
[JAVA] Lecture/Ecriture dans un fichier texte.Divers petit probleme mysql/phpmyadmin
probleme de conversionAdministration: probleme Session & Include
Probleme de référence sur des objets[SOCKET]java.net.SocketException: Connection reset
flux rss: probleme je comprend pasProbleme avec GROUP BY
Plus de sujets relatifs à : [Java] Probleme avec "\n" lors d'un String.split(";")


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR