[Résolu][StringTokenizer - Urgent] Comment ça marche ?

Comment ça marche ? [Résolu][StringTokenizer - Urgent] - Java - Programmation

Marsh Posté le 04-12-2007 à 14:40:33    

Bonjour,
 
Je suis en plein debug d'un prog tout simple. J'ai cru comprendre comment marchait StringTokenizer mais là je comprends pas.
Voici mon exemple :
 

Code :
  1. String delim = "</TD><TD>";
  2.  if (row.lastIndexOf(delim) != -1) {
  3.   StringTokenizer st = new StringTokenizer(row, delim);
  4.   while (st.hasMoreElements()) {
  5.    column = (String) st.nextElement();
  6.    column = column.replaceAll(NEWLINE_TAG, System
  7.      .getProperty("line.separator" ));
  8.    column = deleteTags(column);
  9.    columns.add(column);
  10.   }
  11.  }


 
Alors si row = "HTML", et que je vire le if, plusieurs tokens sont générés, pourquoi ?
Si je laisse le if, et que row =

<TR><TD>a:atm112</TD><TD>&lt;etm security=&quot;no&quot; language=&quot;GB&quot; ido=&quot;142&quot; class=&quot;a:atm112&quot; std=&quot;20&quot;&gt;&lt;para&gt;Install piston rings&lt;varref vrefid=&quot;a:atm:1121&quot; idpos=&quot;1&quot;&gt;(7 - 8 - 9)&lt;/varref&gt;.&lt;/para&gt;&lt;/etm&gt;</TD><TD>&lt;etm security=&quot;no&quot; language=&quot;PR&quot; ido=&quot;142&quot; class=&quot;a:atm112&quot; std=&quot;20&quot;&gt;&lt;para&gt;Colocar os segmentos&lt;varref vrefid=&quot;a:atm:1121&quot; idpos=&quot;1&quot;&gt;(7 - 8 - 9)&lt;/varref&gt;.&lt;/para&gt;&lt;/etm&gt;</TD></TR>


 
Le 1er token vaut 'R' pourquoi ?
J'ai vraiment rien compris à StringTokenizer sur ce programme-ci  :??:  :??:  :??:  :??:  
 
Merci de votre aide.


Message édité par Giz le 05-12-2007 à 09:38:39

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 04-12-2007 à 14:40:33   

Reply

Marsh Posté le 04-12-2007 à 14:42:58    

Voici la String decoupée :
 
real : R
real : a:atm112
real : <etm security="no" language="GB" ido="142" class="a:atm112" std="20"><para>Install piston rings<varref vrefid="a:atm:1121" idpos="1">(7 - 8 - 9)<
real : varref>.<
real : para><
real : etm>
real : <etm security="no" language="PR" ido="142" class="a:atm112" std="20"><para>Colocar os segmentos<varref vrefid="a:atm:1121" idpos="1">(7 - 8 - 9)<
real : varref>.<
real : para><
real : etm>
real : R
 
 
 [:figti]  [:figti]  [:figti]  [:figti]  [:figti]


Message édité par Giz le 04-12-2007 à 14:43:17

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 04-12-2007 à 14:51:41    

je nage, je nage, je nage...
 
EDIT : ça doit être un problème de "caractère escape" ça non dans ma chaîne row ?
 
EDIT2 : kk1 voudrait tester le programme ci-dessus avec la chaîne illustrée ?  [:amandine75011]


Message édité par Giz le 04-12-2007 à 14:58:17

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 04-12-2007 à 15:11:35    

Le 2e argument de StringTokenizer n'est pas un séparateur mais un ensemble de caractères séparateurs, un truc du style.
 
Pourquoi tu n'utilises pas tout simplement String#split?


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Marsh Posté le 04-12-2007 à 19:05:08    

Ouep, donc dans <TR> tous les caractères sont dans ta chaine delim sauf le R... voilà pourquoi le premier token est R

Reply

Marsh Posté le 05-12-2007 à 09:31:47    

Wow !! merci les gars, effectivement ce serait split qu'il me faut.
Mais je doit générer une fonction récursive alors ? (ça ne divise qu'en 2 la chaîne) :/.
N'y a-t-il pas un moyen simple pour tokenizer une String...récupérer un simple tableau de String avec delim comme séparateur.
 
Merci de votre aide. :)


Message édité par Giz le 05-12-2007 à 09:32:18

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 05-12-2007 à 09:38:18    

Oups boulette .... split renvoie bien un tableau de String !!
Merci les gars ! :hello:


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed