Comment trouver un meme caractere plusieurs fois dans une chaine

Résolu/Fermé
Pokermon07 Messages postés 10 Date d'inscription dimanche 30 septembre 2012 Statut Membre Dernière intervention 27 octobre 2014 - 5 avril 2013 à 22:59
Pokermon07 Messages postés 10 Date d'inscription dimanche 30 septembre 2012 Statut Membre Dernière intervention 27 octobre 2014 - 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 mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
5 avril 2013 à 23:21
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 dimanche 30 septembre 2012 Statut Membre Dernière intervention 27 octobre 2014
6 avril 2013 à 00:22
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 mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
Modifié par totodunet le 6/04/2013 à 16:59
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 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
6 avril 2013 à 17:12
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 mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
6 avril 2013 à 17:43
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 dimanche 30 septembre 2012 Statut Membre Dernière intervention 27 octobre 2014
10 avril 2013 à 00:07
Ok merci les gens ;)
0