[java] lire string et le parser en meme temps

Fermé
karine - 12 mai 2005 à 09:38
 maye - 27 déc. 2009 à 18:15
Bonjour !!

J'ai une chaine de caractere qui contient en fait le code d'une page html.

Ce que j'ai fait :
- une fonction qui lit la chaine et enleve ce qu'il y a entre les balises script et style (avec expressions regulieres).

- une fonction qui lit la chaine et enleve les balises (en reperant les caracteres < et >).

- une fonction lit la chaine et enleve la ponctuation en comparant chaque caractere a une liste.

- une fonction lit la chaine et enleve les nbsp (expressions regulieres encore).

- une fonction lit la chaine et la decoupe en mots tout en verifiant que ce ne sont pas des mots interdits.


Bref, je lis la chaine 5 fois !!

Est-ce qu'il n'y aurait pas un moyen de faire tout ça en une seule fois ?

C'est chaud je sais !

Si vous avez des idées, ça m'interresse !
A voir également:

7 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
12 mai 2005 à 10:51
non c'est pas ca que je voulais dire :
tu fais une fonction qui lit ta chaine (comme tu as fait pour tes 5 fonction), tu vas donc lire mot par mot admettons (je ne sais pas comment tu lit pour le moment) : et la tu met un switch :
switch ( mot ){
case '<script>' :  mafonction_elimine_les_balise_script();
   break;
case '<..>' : mafonction_elimine_les_balise_normale();
   break;
case '...' :
  break;
...
...
...
default :
   break;
}

Je pensais plus à truc comme ca en fait, tu vois ce que je veux dire.. donc finallement, casiment tou est déjà fait, il faut juste remanier tes fonction pour en faire un globale qui lit, et les autre qui existent déjà mais sans la lecture de ta chaine (tu passe un pointeur sur le fichier (la ou tu t'es arreté pour traiter le cas : ta fonction lit jusqu'a ce quelle rencontre le dernier symbole à éliminer (ex : </script> pour une balise script), puis renvoie un pointeur sur l'endroit ou elle s'est arretée de lire à la fonction global qui reprend la lecture la ou s'est arretée la fonction qui traitait le dernier cas..
Tu me suis ?
C'est une manière de découper si tu veux les étapes selon ce que tu rencontre mais tu peux tres bien faire ca dans la meme fonction.
3
m0n0-le-14r3 Messages postés 174 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 25 octobre 2005 17
12 mai 2005 à 09:40
tu mets tout ds lqa même fonction

héhé...

bon ok je sors ===> :D
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
12 mai 2005 à 09:57
Super Mono... je vois que t'a précision légendaire est toujours d'actualité... eh eh eh :DDD

Avec un switch par exemple dans un fonction générale qui oriente sur une de tes méthode de substitution selon la reconnaissance des caractère en cours de lecture de ton fichier..

++
0
OK, je vais essayer ça.

Ca a pas l'air si facile que ça !! ;-)
0
bonjour, j ai besoin du code qui permetde lire les données d'une page web, et faire supprime les expression reguliers et les mots interdits.
J'ai une chaine de caractere qui contient en fait le code d'une page html.
si vous pouvez m'aider .
merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
12 mai 2005 à 10:09
oui, je ne pense pas que ce soit simple, cela dépend surtout comme tu détecte tes cas.
0
En fait, je crois pas que ça va pas changer grand chose.

Puisque si le texte contient des balises, de la ponctuation, des nbsp, etc ..., alors je passerais dans tous les ces du switch et j'appellerai mes 5 fonctions qui liront 5 fois ma chaine.

Qu'est-ce que vous en pensez ?
0
Merci,

je vais essayer un truc de ce genre.

C'est pas gagné !
0