Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1573 connectés 

  FORUM HardWare.fr
  Programmation

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°14231
Gourou
Posté le 14-02-2001 à 09:56:54  profilanswer
 

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 !!!
mood
Publicité
Posté le 14-02-2001 à 09:56:54  profilanswer
 

n°14233
wouatouwou​atou
Posté le 14-02-2001 à 10:03:58  profilanswer
 

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"
n°14234
Gourou
Posté le 14-02-2001 à 10:11:03  profilanswer
 

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 !!!
n°14250
Gourou
Posté le 14-02-2001 à 11:43:36  profilanswer
 

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 !!!
n°14298
bibo
-... .. -... ---
Posté le 14-02-2001 à 14:13:00  profilanswer
 

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

n°14304
Gourou
Posté le 14-02-2001 à 14:31:11  profilanswer
 

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 !!!
n°14308
bibo
-... .. -... ---
Posté le 14-02-2001 à 14:37:25  profilanswer
 

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 !

n°14309
Gourou
Posté le 14-02-2001 à 14:43:25  profilanswer
 

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 !!!
n°14312
bibo
-... .. -... ---
Posté le 14-02-2001 à 14:57:32  profilanswer
 

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

n°14316
bibo
-... .. -... ---
Posté le 14-02-2001 à 15:01:25  profilanswer
 

//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

mood
Publicité
Posté le 14-02-2001 à 15:01:25  profilanswer
 

n°14326
Gourou
Posté le 14-02-2001 à 15:29:06  profilanswer
 

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 !!!
n°14327
wouatouwou​atou
Posté le 14-02-2001 à 15:30:46  profilanswer
 

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"
n°14328
wouatouwou​atou
Posté le 14-02-2001 à 15:32:36  profilanswer
 

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"
n°14332
Gourou
Posté le 14-02-2001 à 15:46:27  profilanswer
 

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 !!!
n°14334
wouatouwou​atou
Posté le 14-02-2001 à 15:57:54  profilanswer
 

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"
n°14336
Gourou
Posté le 14-02-2001 à 16:07:07  profilanswer
 

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


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
n°14340
wouatouwou​atou
Posté le 14-02-2001 à 16:20:20  profilanswer
 

c koi le msg derreur ?? :??:


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°14344
Gourou
Posté le 14-02-2001 à 16:30:05  profilanswer
 

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 !!!
n°14434
rodocop
Posté le 15-02-2001 à 01:01:46  profilanswer
 

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);

n°14459
wouatouwou​atou
Posté le 15-02-2001 à 09:42:01  profilanswer
 

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"
n°14472
Gourou
Posté le 15-02-2001 à 11:28:53  profilanswer
 

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 !!!
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

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

 

Sujets relatifs
[java/jsp] Création de cookiesprog java et frame => au secour !!!!
[JAVA ou JAVASCRIPT] Où trouver un moteur de recherche pour site ?[Java] Librairie C
parser XML en JAVAJava Script
un demineur en java ??JAVA: JVM et Source
C est koi le Java ?Programme compile mais marche pas ! [JAVA]
Plus de sujets relatifs à : [JAVA] remplacer une chaine de caractères par une autre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR