Diviser la phrase en mots, mais ont de la difficulté avec les signes de ponctuation en C#
J'ai vu un peu les mêmes questions, mais je suis en train d'y parvenir.
Donné une chaîne str="La lune est notre satellite naturel, c'est à dire qu'elle tourne autour de la Terre!"
Je veux extraire les mots et de les stocker dans un tableau.
Les attendus des éléments d'un tableau ne serait-ce.
the
moon
is
our
natural
satellite
i.e.
it
rotates
around
the
earth
J'ai essayé avec de la Ficelle.split( ','\t','\r') mais cela ne fonctionne pas correctement. J'ai aussi essayé de supprimer l' ., et d'autres signes de ponctuation, mais je voudrais une chaîne comme "c'est à dire" pour être analysé. Quelle est la meilleure façon d'atteindre cet objectif?
J'ai aussi essayé d'utiliser les regex.divisé en vain.
string[] words = Regex.Split(line, @"\W+");
Serait sûrement apprécier quelques coups de coude dans la bonne direction.
.
dans i.e.
et une ponctuation .
sont indiscernables, sauf si vous ajoutez une liste de mots qui sont connus à la fin dans .
.Je remarque que la lune tourne autour de son propre axe. tourne autour de la terre.
OriginalL'auteur Richard N | 2011-09-05
Vous devez vous connecter pour publier un commentaire.
Une regex solution.
Et si vous vraiment veux le corriger dernier
.
suri.e.
vous pouvez utiliser cette.Voici le code que j'utilise.
Résultats:
Pas qu'il ne correspond pas la ponctuation dans la terre.
\b
matchs sur les limites de word.Ce que sur la correspondance de "savoir"? ou quelque chose comme "u.n.j'.c.e.f"?
En tant que
u.n.i.c.e.f
oui.e
🙂Pas juste mis à jour avec mon code.
OriginalL'auteur TheCodeKing
Je crois que la solution que vous cherchez est beaucoup plus complexe que vous le pensez. Vous êtes à la recherche d'une certaine forme de réelle analyse de la langue, ou, au minimum, d'un dictionnaire, de sorte que vous pouvez déterminer si une période est une partie d'un mot ou à la fin d'une phrase. Avez-vous envisagé le fait qu'il peut faire les deux?
Envisager l'ajout d'un dictionnaire de permis "des mots qui contiennent des signes de ponctuation." Cela peut être la façon la plus simple pour résoudre votre problème.
\b
de sorte que vous n'avez pas à, certes il y a quelques zones d'ombre. Par exemplei.e.
avec le match commei.e
.OriginalL'auteur Greg D
Cela fonctionne pour moi.
Résultats:
faire du post-traitement des résultats, la suppression des virgules et des points-virgules, etc.
OriginalL'auteur Cheeso
OriginalL'auteur Kirill Polishchuk