bonsoir!
j'ai une chaîne de caractères sous forme d'un ensemble de mots séparés par des espaces.
je veux obtenir une autre chaîne à partir de la première mais qui ne contient pas de doublons.
est-ce possible?
merci d'avance !
bonsoir!
j'ai une chaîne de caractères sous forme d'un ensemble de mots séparés par des espaces.
je veux obtenir une autre chaîne à partir de la première mais qui ne contient pas de doublons.
est-ce possible?
merci d'avance !
une façon simple consiste à utiliser split pour convertir la string en tableau de string, copier dans un nouveau tableau les éléments de l'ancien qui n'ont jamais été inséré, pour finir recréer un string a partir du nouveau tableau.
http://download.oracle.com/javase/1....lang.String%29
il y'a d'autres moyens en jouant avec substring, indexof, matches, replaceAll, mais ça risque d'être plus complexe...
merci pour la réponse!
mais peux-tu me donner un exemple simple avec Split() , qui montre surtout le traitement des doublons
et merci !
au fait, j'ai procédé par un StringTokenizer comme-suit:
et c'est réglé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 String texte = "bonjour vous nous bonjour nous nous salut"; StringTokenizer str = new StringTokenizer(texte); String[] tab = new String[str.countTokens()]; int i = 0; while (str.hasMoreTokens()) { tab[i++] = str.nextToken(); } List<String> list = Arrays.asList(tab); Set<String> set = new HashSet<String>(list); String[] nov_tab = new String[set.size()]; set.toArray(nov_tab); String nouv_txt =(Arrays.toString(nov_tab));![]()
Pour cette partie de code je la ferais comme ça plutôt, résultat identique sans tokenizer et sans boucle.
ou éventuellement test.split("\s+"); si tu souhaite virer les espaces/tabulations/... et saut de ligne au passage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 String texte = "bonjour vous nous bonjour nous nous salut"; String[] tab = texte.split(" ");
http://download.oracle.com/javase/1....ttern.html#sum
bonjour
j'ai utilisé StringTokenizer car ma chaine de caractères contient en réalité d'autres séparateurs que je dois éliminer et j'ai pas pu réglé la chose avec split().
par contre, dans une autre partie de mon code, j'ai fait ça:
avec: nouv_txt une chaine de caractères qui contient que des mots séparés par un retour chariot, c-à-d que chaque mot est dans une ligne à part.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 String[] txt = nouv_txt.split("\r"); for(int j=0 ; j<txt.length ; j++){ System.out.println(txt[j]); }
j'ai voulu mettre les mots de la chaine dans un tableau, chaque mots dans une case, mais l'affichage de txt[j] ne m'affiche que le dernier mot de la chaine.
pouvez-vous m'expliquer
Merci !
Partager