[JAVA] remplacer une chaine de caractères par une autre

remplacer une chaine de caractères par une autre [JAVA] - Programmation

Marsh Posté le 14-02-2001 à 09:56:54    

Salut !!
je voudrais remplacer dans une chaine de caractères un morceau de celle-ci.  
Comment faire en JAVA ?  
car il existe la méthode Replace mais elle fonctionne qu'avec des caractères...  
Merci


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le 14-02-2001 à 09:56:54   

Reply

Marsh Posté le 14-02-2001 à 10:03:58    

pige pas trop ce ke tu veu .. :D Ce doit etre le matin !!!


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 14-02-2001 à 10:11:03    

par exemple dans la chaine "C'est dur le matin" je voudrais remplacer "le matin" par "la journée" ce qui donnerait "C'est dur la journée".
OK ???? Reprend donc une tasse de café (surtout avec JAVA !!!)


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le 14-02-2001 à 11:43:36    

Alors aucune idée??? Au secours !!! Help !!! SOS !!! -.-..--..- !!! :sarcastic: :D :o :gun: :bic: :spookie: :bounce: :jap:

 

--Message édité par Gourou--


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le 14-02-2001 à 14:13:00    

si :
 
String sonTexte = "C'est dur le matin";
String txtFind = "le matin";
String txtReplace= "la journée";
String tmp;
 
int lgFind = txtFind.length();
int lgReplace=txtReplace.length();
 
for (int k=0;k<(sonTexte.length()-lgFind);k++)
{
  try
  { tmp = sonTexte.substring(k,k+lgFind); }
  catch(Exception e)
  { break; }
  if ( tmp.equalsIgnoreCase(txtFind) )
  {
    sonTexte= sonTexte.substring(0,k) + txtReplace + sonTexte.substring(k+lgFind,sonTexte.length());
    k=k+lgReplace;
  }
}
 
ça devrait marcher :D

 

--Message édité par bibo--

Reply

Marsh Posté le 14-02-2001 à 14:31:11    

Merci pour le code.
Je viens de l'essayer mais il faut y faire de modifs car il ne remplace pas le mot, il écrit juste après.
Je vais essayer de bidouiller ça et si tu as une idée post la moi, merci.
A+


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le 14-02-2001 à 14:37:25    

mais normalement ça devrait le remplacer, parce qu'avec substring je coupe tout ce qu'il y a avant le mot, puis je rajoute le remplaçant, et enfin je colle tout ce qui se trouve après le mot !

Reply

Marsh Posté le 14-02-2001 à 14:43:25    

Cool :jap:, j'ai trouvé : ce bout de ligne était en trop:
+ sonTexte.substring(k+lgFind,sonTexte.length())
 
Encore merci !! :benetton: :hot:


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le 14-02-2001 à 14:57:32    

mais non c'est pas en trop, si le mot à remplacer ne se trouve pas en fin de chaine, tu perd tout ce qu'il y a après !
 
le code que j'ai mis marche tel quel, il suffit juste de mettre
String sonTexte = "C'est dur le matin ";
rajouter un espace à la fin de la chaine (ou tout autre caractère), sinon le programme s'arrête avant la fin.
 
de rien :D

 

--Message édité par bibo--

Reply

Marsh Posté le 14-02-2001 à 15:01:25    

//voili le chti programme complet pour tester
 
import java.io.*;
 
public class test {
 public static void main(String[] arguments)
 {
  String sonTexte = "C'est dur le matin ";
  String txtFind = "le matin";
  String txtReplace= "la journée";
  String tmp;
   
  int lgFind = txtFind.length();
  int lgReplace=txtReplace.length();
   
  System.out.println(sonTexte + "\n" );
   
  for (int k=0;k<(sonTexte.length()-lgFind);k++)
  {
     try
     { tmp = sonTexte.substring(k,k+lgFind); }
     catch(Exception e)
     { break; }
     if ( tmp.equalsIgnoreCase(txtFind) )
     {
        sonTexte= sonTexte.substring(0,k) + txtReplace + sonTexte.substring(k+lgFind,sonTexte.length());
        k=k+lgReplace;
     }
  }
   
  System.out.println(sonTexte);
 }
}
 
//copyrigth 2000 bibo :D

Reply

Marsh Posté le 14-02-2001 à 15:01:25   

Reply

Marsh Posté le 14-02-2001 à 15:29:06    

Dans mon cas ça marche pô :cry:
Pourtant ton prog est logique !
En fait au lieu de m'afficher xxxxxaxxxx  
il m'affiche xxxxx axxxx  si je demande de remplacer les 'a' par ' '.

 

--Message édité par Gourou--


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le 14-02-2001 à 15:30:46    

Je sais ke c facile de critiquer ... mais c pas bô !!! :D:D
Cette bidouille en fin de chaine !!!!
 
Tu devrais au moins le mettre en dynamique, le concatener par exemple a la chaine donnee par l'utilisateur ou autre... C deja mieu... enfin, a mon gout :p
 
voila un chtit prog hihihi... ptet pas aussi perfomant que l'autre mais bon.. je voulais juste poster monmien :D
 
public static String replace(String s_original, String s_cherche, String s_nouveau)
{
  StringBuffer s_final;
  int index = s_original.indexOf(s_cherche);
 
  if ( ( s_original == null ) || ( s_original.equals("" ) ) )
     return "";
  if ( ( s_nouveau == null ) || ( s_nouveau.equals("" ) )
  || ( s_cherche == null ) || ( s_cherche.equals("" ) ) )
     return new String(s_original);
 
  s_final = new StringBuffer(s_original.substring(0,index));
  s_final.append(s_nouveau);
  s_final.append(s_original.substring(index+s_cherche.length()));
 
  return s_final.toString();
}
 
J'espere kil fonctionne :D car jai pas teste...


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 14-02-2001 à 15:32:36    

P.S: faudrait faire les tests avant les declaration :D
 
public static String replace(String s_original, String s_cherche, String s_nouveau)  
{  
  if ( ( s_original == null ) || ( s_original.equals("" ) ) )  
     return "";  
  if ( ( s_nouveau == null ) || ( s_nouveau.equals("" ) )  
  || ( s_cherche == null ) || ( s_cherche.equals("" ) ) )  
     return new String(s_original);  
 
  StringBuffer s_final;  
  int index = s_original.indexOf(s_cherche);  
 
  s_final = new StringBuffer(s_original.substring(0,index));  
  s_final.append(s_nouveau);  
  s_final.append(s_original.substring(index+s_cherche.length()));  
 
  return s_final.toString();  
}


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 14-02-2001 à 15:46:27    

Merci...
Mais j'arrive tjs pas a le faire marcher ! c peut-etre a cause de la façon dont je l'insère dans mon prog (qui ressemble à une véritable boucherie maintenant...)
--> ouatououatou : je pige pas bien l'histoire des buffers... c quoi exactement ?


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le 14-02-2001 à 15:57:54    

c simplement une sorte de string bufferisé :D
En d'autre termes, ca sert lorsque tu veux faire des operations sur des String... Au lieu de faire:
 
 s = s + s1 + s2 + s3;
 
tu fais:
 
 s.append(s1).append(s2).append(s3);
 
Enfin, là, j'ai essayer de tout mettre sur la meme ligne mais sinon tu peux les ecrire sur 3 instructions ...
 
Essaie le et pi dis moi si ca marche :)


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 14-02-2001 à 16:07:07    

je n'arrive pas à le faire marcher..
Merci pour tes explications .


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le 14-02-2001 à 16:20:20    

c koi le msg derreur ?? :??:


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 14-02-2001 à 16:30:05    

Y'a pas de msg d'erreur : il y a aucun résultat qui s'affiche .


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le 15-02-2001 à 01:01:46    

Elle m'a l'air correcte la methode de wouatouwouatou
Gourou, si tu veux tester, il faut faire qq comme:
 
String sonTexte = "C'est dur le matin";
String txtFind = "le matin";
String txtReplace= "la journée";
String result = replace(sonTexte, txtFind, txtReplace);
 
System.out.println(result);

Reply

Marsh Posté le 15-02-2001 à 09:42:01    

bah... c normal... la methode te retourne un string
Elle affiche rien!! :D
fo ke taffiche le resultat de la fonction :D:D
J'aurais ptet du te laiser le cogiter seul.. taurais compris ...
Ce ke jsuis vache la hein ??!! :D:D:D


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 15-02-2001 à 11:28:53    

Bon, Wouatouwouatou, tu m'excuseras mais j'ai préféré l'autre méthode...
Je l'ai bidouillée et maintenant ca marche :
 
import java.io.*;  
 
public class test {  
public static void main(String[] arguments)  
{  
  String sonTexte = "C'est dur le matin ";  
  String txtFind = "le matin";  
  String txtReplace= "la journée";  
  String tmp;  
   
  int lgFind = txtFind.length();  
  int lgReplace=txtReplace.length();  
   
  System.out.println(sonTexte + "\n" );  
   
  for (int k=0;k<(sonTexte.length();k++)  
  {  
     try  
     { tmp = sonTexte.substring(k,k+lgFind); }  
     catch(Exception e)  
     { break; }  
     if ( tmp.equalsIgnoreCase(txtFind) )  
     {  
        sonTexte= sonTexte.substring(0,k) + txtReplace + sonTexte.substring(k+lgFind,sonTexte.length());
     }  
  }  
   
  System.out.println(sonTexte);  
}  
}  
 
C'est bizarre mais ca marche...


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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