IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Lister les mots d'une phrase


Sujet :

Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut Lister les mots d'une phrase
    Bonjour,
    je suis à la recherche d'un programme, qui prend en entrée un string (une phrase)
    et qui me sort la liste de tout les mots sachent qu'il n'y a pas de doublon
    voila merci bcp
    j'ai deja commencé mon prog :

    procedure TForm3.decoupe (chaine : String);
    var i:integer;
    begin
    for i:=1 to Length(chaine) do
    if (chaine[i] = ',') or (chaine[i] = '''') or (chaine[i] = ':') or (chaine[i] = '?') or (chaine[i] = '.')or (chaine[i] = ';') or (chaine[i] = '!') or (chaine[i] = '-') then chaine[i] := ' ';

    while Pos(' ', chaine) > 0 do Delete(chaine, Pos(' ', chaine), 1);
    while chaine[1] = ' ' do Delete(chaine, 1, 1);
    while chaine[Length(chaine)] = ' ' do Delete(chaine, Length(chaine), 1);
    for i:=
    while Pos(' ',chaine)>0 do

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    tu peux aussi faire quelquechose en te servant des TStringList du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Var
      LMots: TStringList;
     
    for i := 0 to Length( SChaine ) do
      if SChaine[ i ] in [ ' ', ';', '.', ....... ]
        then SChaine[ i ] := #13;
      LMots := TStringList.Create;
      LMots.Text := SChaine;
      .... Affichage ou traitement avec LMots
      LMots.Free;
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut
    je dois deja a partir d'un fichier .txt -->mettre dans un tsringlist et parcourir chaque ligne et je dois découper les mots en fait

  4. #4
    Membre chevronné
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Par défaut
    Bonjour

    Voici les codes que j'utilise.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    Type
       EnsembleCarac  = Set of Char;
     
    {--------------------------------------------------------}
    { Compte le nombre de mots d'une phrase en utilisant     }
    { un ou plusieurs caractères séparateurs de champs       }
    { Exemple : Mots:=CompteMots(Chaine,[',',';',#9]);       }
    {          Utilisation de la virgule, du point-virgule   }
    {          et du tabulateur comme séparateur de champs   }
    {--------------------------------------------------------}
    Function CompteMots(S	: String; WordDelims : EnsembleCarac) :	Integer;
    var
       I, Count : Integer;
     
    begin
       If Length(S) = 0 Then Result:=0
        Else
         begin
            Count := 1;
            For I:=1 To Length(S) Do
             If (S[I] in WordDelims) Then Inc(Count);
            Result := Count;
         end;
    end;
    {--------------------------------------------------------}
    { Extrait le n° mot d'une phrase en utilisant            }
    { un ou plusieurs caractères séparateurs de champs       }
    { Exemple : Mot:=ExtraitMot(5,Chaine,[',',';',#9]);      }
    {          Utilisation de la virgule, du point-virgule   }
    {          et du tabulateur comme séparateur de champs   }
    {--------------------------------------------------------}
    Function ExtraitMot(N : Integer;S : String;WordDelims : EnsembleCarac) : String;
    var
        Chn       : String;
        I, Count  : Integer;
        LongRech  : Integer;
     
    Begin
        Count := 0;
        I := 1;
        Chn:='';
        LongRech:=Length(S);
        S:=S + ' ';
        While (I <=	LongRech) And (Count <>	N) Do
         begin
            while (I < LongRech) and (S[I] in WordDelims) do Inc(I);
     
            if I <= LongRech then Inc(Count);
            while (I <= LongRech) And Not(S[I] in WordDelims) Do
             begin
                If Count = N Then  Chn:=Chn + S[I];
                Inc(I);
             end;
         end;
        Result:=Chn;
    end;
    {--------------------------------------------------------}

  5. #5
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Tu as déjà une TStringList, dont chaque ligne contient une phrase ?
    C'est pas grave, rien ne t'empeche de creer et d'utiliser d'autres TStringList pour la liste des mots.

    Justement, à ta place je ferais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LPhrases : TStringList; -> item = phrase, object = LMots
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LMots : TStringList; -> item = mot -> liste à construire selon mon post plus haut.
    Tu as ainsi l'ensemble des infos, les phrases, et les mots qui la composent dans ta liste initiale de phrases
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

Discussions similaires

  1. Compter les mots d'une phrase
    Par miss64 dans le forum Langage
    Réponses: 12
    Dernier message: 07/01/2017, 10h57
  2. séparer les mots d'une phrase
    Par ritchy99 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/01/2013, 00h02
  3. Récupérer les mots d'une phrase
    Par ehtpistesigiste dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 05/11/2012, 16h49
  4. [PHP 5.0] Rechercher les mots d'une phrase dans une table
    Par tutomania dans le forum Langage
    Réponses: 8
    Dernier message: 16/12/2009, 12h30
  5. Extraire les mots d'une phrase
    Par SilkyRoad dans le forum Contribuez
    Réponses: 1
    Dernier message: 24/08/2007, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo