Sérarer les mots d'une chaine de caractères

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 067 fois - Téléchargée 34 fois

Contenu du snippet

1- où il y a le premier commentaire, marquer l'objet d'où vient le texte
2- où il y a le 2ième et le 3ième commentaire, marquez la liste qui va recevoir les mots un à un

Ce qui est formidable avec ma source, c'est qu'elle se fiche complètement des espaces de trops. Si tu marque exemple " la maison est bleu", le programme dira quand même que tu as 4 mots.

Source / Exemple :


Dim lelen, position, buf, carac, stri
stri = Text1.Text 'à mettre l'objet désiré(source)
lelen = Len(stri)
For position = 1 To lelen
carac = Mid$(stri, position, 1)
buf = buf & LTrim(carac)
If carac = " " Then
If LTrim(buf) = Empty Then
buf = ""
Else
List1.AddItem LTrim(buf) 'à mettre l'objet désiré (destination)
buf = ""
End If
End If
If position = lelen Then
If LTrim(buf) = Empty Then
buf = ""
Else
List1.AddItem LTrim(buf) 'à mettre l'objet désiré(distination)
buf = ""
End If
End If
Next

Conclusion :


sa ma pris 30 min pour faire ça

A voir également

Ajouter un commentaire

Commentaires

Lordryck
Messages postés
2
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
28 juin 2003
-
autre soluce:

Dim LesMots() as string
LesMots = split(MonTexte, " ")
for i = 0 to ubound (LesMots)
List1.AddItem LesMots(i)
next i
cs_Pulcocitron
Messages postés
5
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
24 avril 2004
-
Je trouve la solution proposée par Lordryck plus attrayante, cependant, je crois que l'on peut se contenter de split(MonTexte), le séparateur est en option est par défaut sa valeur est l'espace " " (enfin je crois).
Par contre il me semble bien qu'il y a un décalage dans ubound, mieux vaut faire for i = 0 to ubound(LesMots)-1; car ubound indique le nombre d'éléments (et non l'index du dernier...)
De toute façon, je ne crois pas que celà créé d'erreur pour des listes lorsque l'index est hors de la définition, c'est juste un détail...
Utilisateur anonyme -
Non puisque UBound part de 0, comme pour les éléments d'une Listbox. C'est donc bien :
For I = 0 To UBound(LesMots)

gabchampagne > Tu as l'air hyper content de ta source (on dirait qu'elle est révolutionnaire), tant mieux pour toi :)
J'ai bien rigolé quand j'ai vu ton 2ème paragraphe "Ce qui est formidable..." parce que, en proposant une source qui se charge de séparer des mots, il vaut mieux en effet qu'elle affiche 4 mots si tu lui en donnes 4... Logique... :-)
N'empêche que tu as dû faire une sacrée tête quand tu as vu l'alternative de Lordryck... non ?
+
cs_rene38
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
9 -
La parole est à la défense :
Avec MonTexte = " Ceci est un texte"
(ça contient 4 mots mais c'est bourré d'espaces)
LesMots Split(MonTexte, " ") ou LesMots Split(MonTexte)
UBound(LesMots) est largement supérieur à 4.
Utilisateur anonyme -
En effet... Cette solution, peut-être ?

Dim LesMots() As String
LesMots Split(MonTexte, " ") 'ou LesMots Split(MonTexte)
For I = 0 To UBound(LesMots)
If LesMots(I) <> "" Then List1.AddItem LesMots(I)
Next I

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.