Comment trouver un meme caractere plusieurs fois dans une chaine

Résolu
Pokermon07 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
Pokermon07 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   - 10 avril 2013 à 00:07
Bonjour,

mon problème est le suivant, je voudrais dans une chaine de caractères trouver les positions du MÊME caractère dans la chaine. En l'occurrence ici j'ai par exemple cette chaine: "je vous pose une question" et j'aimerais trouver les positions des espaces pour pouvoir les supprimer et me retrouver avec cette chaine: "jevousposeunequestion". J'espère avoir été clair...

Merci d'avance

A voir également:

2 réponses

totodunet Messages postés 1377 Date d'inscription   Statut Membre Dernière intervention   200
 
avec StreamTokenizer() pour lire mot à mot et une boucle for pour afficher à la suite les mots
0
Pokermon07 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Euuuh je suis un novice et j'ai peur de pas comprendre ^^ StreamTokenizer lit mot par mot c'est ça ? Et c'est quoi l'histoire de la boucle for ?
0
totodunet Messages postés 1377 Date d'inscription   Statut Membre Dernière intervention   200
 
doc officielle de la classe StreamTokenizer : https://docs.oracle.com/javase/1.5.0/docs/api/java/io/StreamTokenizer.html

nextToken() représente le prochain Token
ttype, de type integer, indique le type du Token (si c'est un nombre, un mot, la fin du fichier...)

Il lui faut en paramètre un FileReader qui lui même doit avoir en paramètre un File :

File f = new File("monfichiertexte.txt");
FileReader fr = new FileReader(f);
StreamTokenizer st = new StreamTokenizer(fr);
while(st.nextToken()!=StreamTokenizer.TT_EOF) //tant que l'on n'arrive pas à la fin du fichier
{
if(st.ttype==StreamTokenizer.TT_WORD) //Si le Token est un mot
System.out.print(st.sval); //affiche à la suite le token
}



Qui ne tente rien n'a rien
0
KX Messages postés 16760 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Remarque : comme son nom l'indique StreamTokenizer c'est fait pour les Stream, c'est à dire les fichiers. D'ailleurs l'exemple de totodunet ne trompe pas, il y a un File qui se promène...
Pour la manipulation des String on a StringTokenizer, ou je devrais plutôt dire on avait. Car l'utilisation de cette classe n'est plus conseillée.

https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html
"StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead."

Voici comment on pourrait faire en utilisant une expression régulière :

String str1 = "je vous pose une question";
String str2 = str1.replaceAll("\\s", "");
System.out.println(str2);

Ici l'expression régulière \s désigne tous les séparateurs (espace, tabulation, etc.) et les supprime donc toutes de la chaîne.
0
totodunet Messages postés 1377 Date d'inscription   Statut Membre Dernière intervention   200
 
oui, de plus mon exemple ne marche que pour les mots. pour les nombres il faudra mettre une nouvelle condition
0
Pokermon07 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Ok merci les gens ;)
0