Pbl de recherche d occurences [JAVA] - Java - Programmation
Marsh Posté le 28-05-2002 à 10:53:42
titi76 a écrit a écrit : Salut à vous, je voudrais effectuer des recherches d occurences ds un String, pour remplacer certaines chaines... avec la version 1.4 il y a String.replaceAll(String, String); Mais avec la version 1.2 ca ne marche pas. Donc j ai créé la fonction a la main : avec des indexOf et substring... Le probleme est que si je recherche le mot java, la recherche tient compte de la casse. c a d que toutes les occurences de <b>J</b>ava sont ignorées. Alors comment faire pour ignorer la casse ds ma recherche ??? Merci a vous Titi ;-} |
Et le méthode replace de StringBuffer, c pas bien !?
Marsh Posté le 28-05-2002 à 11:13:17
el_gringo a écrit a écrit : Et le méthode replace de StringBuffer, c pas bien !? |
bha ca a un peut rien à voir ...
sinon pour ton problème, bha ca dépend de la façon dont tu as écrit ta méthode ... mais j'imagine qu'à un moment tu testes l'égalité de caractères. Plutot que de faire un bête ==, tu fais une Character.toLowerCase(char1) == Character.toLowerCase(char2)
Marsh Posté le 28-05-2002 à 11:16:06
benou a écrit a écrit : bha ca a un peut rien à voir ... sinon pour ton problème, bha ca dépend de la façon dont tu as écrit ta méthode ... mais j'imagine qu'à un moment tu testes l'égalité de caractères. Plutot que de faire un bête ==, tu fais une Character.toLowerCase(char1) == Character.toLowerCase(char2) |
Ha ouais.
Désolé pour le faux espoir à toi titi...
Marsh Posté le 28-05-2002 à 11:22:52
et non ca marche pas il me fait toujours la distinction entre majuscule et minuscule
;-{
Marsh Posté le 28-05-2002 à 11:24:21
y a pas un autre moyen que de tester caractere par caractere ??
Marsh Posté le 28-05-2002 à 11:26:21
si une ame bien veilante peut m aider voici mon code
public String remplace ( String str, String oldstr, String newstr)
{
int taille = oldstr.length();
String nouveau = new String();
StringBuffer buff = new StringBuffer(str);
int deb = 0;
int ici = buff.indexOf(oldstr, deb);
while (ici != -1)
{
nouveau += buff.substring(deb, ici);
nouveau += newstr;
deb = ici+taille;
ici = buff.indexOf(oldstr, deb);
}
nouveau += buff.substring(deb);
return nouveau;
}
Marsh Posté le 28-05-2002 à 11:38:43
titi76 a écrit a écrit : si une ame bien veilante peut m aider voici mon code public String remplace ( String str, String oldstr, String newstr) { int taille = oldstr.length(); String nouveau = new String(); StringBuffer buff = new StringBuffer(str); int deb = 0; int ici = buff.indexOf(oldstr, deb); while (ici != -1) { nouveau += buff.substring(deb, ici); nouveau += newstr; deb = ici+taille; ici = buff.indexOf(oldstr, deb); } nouveau += buff.substring(deb); return nouveau; } |
Mais, pour ton pb de majuscules, t'as qu'a utiliser la méthode toLowerCase de String !
Marsh Posté le 28-05-2002 à 11:42:14
j y ai pense mais si je fais ca je ne vais pas trouve les occurences en majuscule ....
par exemple si je cherche JAVA -> je le transforme en java et apres je recherche java. je ne vais pas trouvé les occurences de Java, JAVA, jAva, ...
Marsh Posté le 28-05-2002 à 11:43:49
Bin faut savoir ce que tu veux. D'un coté tu veux pas de casse et de l'autre t'en veux.
Si tu t'en fous tu transformes TOUT en minuscules (et donc JAVA deviendra java et ca fonctionnera).
Marsh Posté le 28-05-2002 à 11:44:55
titi76 a écrit a écrit : j y ai pense mais si je fais ca je ne vais pas trouve les occurences en majuscule .... par exemple si je cherche JAVA -> je le transforme en java et apres je recherche java. je ne vais pas trouvé les occurences de Java, JAVA, jAva, ... |
Mais, convertis les 2 String à comparer !
Marsh Posté le 28-05-2002 à 11:47:23
grilled
Marsh Posté le 28-05-2002 à 11:49:11
merci tu m as donne une idee
en fait je vais faire une copie de mon texte en minuscule, recuperer les index des occurences et faire le remplacement ds mon original
titi ;-}
Marsh Posté le 28-05-2002 à 11:50:04
DarkLord a écrit a écrit : grilled |
Oui, mais moi c'est mieux expliqué, plus clair, plus concis.
Non, vraiement, je préfère ma version !
Marsh Posté le 28-05-2002 à 11:50:41
el_gringo a écrit a écrit : Oui, mais moi c'est mieux expliqué, plus clair, plus concis. Non, vraiement, je préfère ma version ! |
Marsh Posté le 28-05-2002 à 14:33:04
je comprend pas ton code : tu utilises un stringBuffer uniquement pour faire un substring ??? et pluis tu fais des += ...
tu ferais mieux de faire le contraire : utiliser le StringBuffer pour stocker ta chaine resultat, et faire le substring sur la chaine d'origine ...
Marsh Posté le 28-05-2002 à 14:33:56
remarque : le += c'est pas du tout efficace en Java !!!
mais alors pas du tout du tout !
des que tu as une boucle avec des += de chaines dedans il faut remplacer ca par un StringBuffer !
Marsh Posté le 28-05-2002 à 15:26:31
benou a écrit a écrit : remarque : le += c'est pas du tout efficace en Java !!! mais alors pas du tout du tout ! des que tu as une boucle avec des += de chaines dedans il faut remplacer ca par un StringBuffer ! |
Ha ouais !? c beaucoup plus lent qu'un Append de StringBuffer !?
Marsh Posté le 28-05-2002 à 15:33:06
el_gringo a écrit a écrit : Ha ouais !? c beaucoup plus lent qu'un Append de StringBuffer !? |
yaisse
Marsh Posté le 28-05-2002 à 10:49:49
Salut à vous,
je voudrais effectuer des recherches d occurences ds un String, pour remplacer certaines chaines...
avec la version 1.4 il y a String.replaceAll(String, String);
Mais avec la version 1.2 ca ne marche pas.
Donc j ai créé la fonction a la main : avec des indexOf et substring...
Le probleme est que si je recherche le mot java, la recherche tient compte de la casse. c a d que toutes les occurences de <b>J</b>ava sont ignorées.
Alors comment faire pour ignorer la casse ds ma recherche ???
Merci a vous
Titi ;-}