Chercher et remplacer en java

Diablotin63 Messages postés 14 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 1 juillet 2004 - 18 mai 2004 à 11:39
Diablotin63 Messages postés 14 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 1 juillet 2004 - 19 mai 2004 à 10:45
Bonjour les gens,

Alors j'ai un petit problème: j'ai un fichier txt contenant des balises, ie des variables à remplacer. Je voudrais copier mon fichier et remplacer les balises par ce que une saisie effectuée auparavant.
Disons que j'ai le fichier ancien.txt et je veux creer nouveau.txt en ayant remplacer la balise "variable" par "library" le truc c'est que je ne vois po comment faire pour faire ça. j'utilise bien replace mais c'est du bricolage je trouve, caractère par caractère c'est pas génial.

Help svp messieurs dames

Diablotin63

24 réponses

cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
18 mai 2004 à 12:15
* Soit tu optimises ton fichier de base
* La technique du replace est bonne...

B@ron {EU.BELGIUM}
0
Diablotin63 Messages postés 14 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 1 juillet 2004
18 mai 2004 à 13:35
Ca m'embete la méthode du replace car par exemple si ej veux remplacer "toto" par "tota" la méthode replace ne prend dans l'ordre d'apparition les caractères et me donnera "tato"! ;(

Diablotin63
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
18 mai 2004 à 13:48
Es-tu certain de ce que tu dis?
Sinon, sois plus clair stp :)

B@ron {EU.BELGIUM}
0
Diablotin63 Messages postés 14 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 1 juillet 2004
18 mai 2004 à 14:13
Ben oui je pense sauf erreur de ma part.

exemple:

/******** Algo *********/

String chaine = buf.readLine();
System.out.println("ancienne chaine" + chaine);
int i =0;
String var2="library";
String aremplacer="#variable";

while (i < 7)
{
System.out.println(aremplacer.charAt(i) + " " + var2.charAt (i));

chaine = chaine.replace(aremplacer.charAt(i),var2.charAt(i));

System.out.println("temp chaine= "+ chaine);

i++;

}
////////////

Diablotin63
0

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

Posez votre question
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
18 mai 2004 à 14:20
Utilise plutôt la détection de chaines de caractères à l'aide de substring qui te revois l'indice. Ensuite tu delete d'un coup la substring et tu la remplace à l'indice.

B@ron {EU.BELGIUM}
0
Diablotin63 Messages postés 14 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 1 juillet 2004
18 mai 2004 à 14:30
merci je vais essayer, ej sais po trop si ça m'ira mais merci
Diablotin63
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
18 mai 2004 à 22:20
Salut,

pourquoi ne pas utiliser les regexp ?
Dans la classe String il y a la méthode replaceAll() qui fait ce que tu souhaites.

chaine=chaine.replaceAll("#variable","library");


Au sujet de ton algo de remplacement, je crois qu'il fait tout sauf ce que tu veux. Remplacer le '#' par un 'L', le 'v' par un 'i' ... c'est un peu étrange je trouve...
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
19 mai 2004 à 07:36
Prend la soluce de kirua12, elle est plus propre... J'avais oublié le replaceAll :-p
B@ron {EU.BELGIUM}
0
Diablotin63 Messages postés 14 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 1 juillet 2004
19 mai 2004 à 09:17
bah j'y avais pas pensé! En fait j'arrive pas à l'utiliser, la méthode replaceall est dans quelle librairie car mon environnement comprend pas! ;o(

Merci en tout cas les gars!

Diablotin63
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
19 mai 2004 à 09:28
Je pense que c'est dans String sinon regarde dans StrignBuffer.

B@ron {EU.BELGIUM}
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
19 mai 2004 à 09:28
SORRY, StringBuffer
B@ron {EU.BELGIUM}
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
19 mai 2004 à 09:34
t'as quel JDK ? 1.3 ou 1.4 ?
Cette méthode n'est disponible qu'à partir de 1.4
Si tu es en 1.3 il faut utiliser RegExp de Jakarta
http://jakarta.apache.org/regexp/index.html
Le principe reste le même :

RE re=new RE("#variable");
chaine=re.subst(chaine,"library");
0
Diablotin63 Messages postés 14 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 1 juillet 2004
19 mai 2004 à 09:38
j'ai le 1.4.2_03 mais ça marche pas, alors je dois pas être très réveillé ce matin car je trouve pas la méthode replaceAll
dans java.lang.stringbuffer...

merci

Diablotin63
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
19 mai 2004 à 09:40
elle est dans String
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
19 mai 2004 à 09:43
0
Diablotin63 Messages postés 14 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 1 juillet 2004
19 mai 2004 à 09:44
grrrrr toujours pas, diablotin l'handicapé du matin
En plus j'utilise WASD et il va cherche tout seul les librairies nécessaires, il trouve pas la méthode replaceall

import java.lang.String;

chaine.replaceAll("coucou","salut"); // ça marche pas
Diablotin63
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
19 mai 2004 à 09:49
Ellève ton import java.lang.String...

B@ron {EU.BELGIUM}
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
19 mai 2004 à 09:49
Elève ton import java.lang.String...

B@ron {EU.BELGIUM}
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
19 mai 2004 à 09:50
ENLEVE ==> genre handic je suis en forme today :-p
B@ron {EU.BELGIUM}
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
19 mai 2004 à 09:53
LE PREMIER ARG de replaceAll est un pattern ==>

http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html#sum

B@ron {EU.BELGIUM}
0
Rejoignez-nous