[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?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
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