Comment obtenir tous les mots d'une chaîne dans c #?
J'ai un paragraphe dans une chaîne unique et je voudrais avoir tous les mots de ce paragraphe.
Mon problème est que je ne veux pas les suffixes des mots qui se terminent par des signes de ponctuation tels que (',','.',"','"',';',':','!','?') et /n /t etc.
Je ne veux pas les mots avec un "s et" m comme world's
où il ne devrait revenir du monde.
Dans l'exemple
he said. "My dog's bone, toy, are missing!"
la liste devrait être: he said my dog bone toy are missing
source d'informationauteur Joseph Lafuente | 2011-02-11
Vous devez vous connecter pour publier un commentaire.
Expansion sur Shan réponseje considère quelque chose comme cela comme un point de départ:
Pourquoi inclure le
'
personnage? Parce que cela permettra d'éviter des mots comme "nous sommes" est divisée en deux mots. Après la capture, vous pouvez manuellement supprimer le suffixe-même (alors que sinon, vous ne pouviez pas reconnaître quere
n'est pas un mot et l'ignorer).Donc:
Exemple d'entrée:
Exemple de sortie:
Une limitation de cette approche est qu'il ne gère pas les acronymes; par exemple, "Y. M. C. A." serait traité comme quatre mots. Je pense que ça pourrait aussi être gérée par dont
.
comme un personnage de match en un mot, et puis il décapage si c'est un arrêt complet de la suite (c'est à dire, en vérifiant qu'elle est la seulement période de la parole ainsi que le dernier caractère).Espère que cela est utile pour vous:
Voir Regex limite de mot les expressionsQuel est le moyen le plus efficace de compter tous les mots dans un richtextbox?. Morale de l'histoire, c'est qu'il y a de nombreuses façons d'aborder le problème, mais les expressions régulières sont probablement la voie à suivre pour des raisons de simplicité.
split sur les espaces, la garniture de tout ce qui n'est pas une lettre sur les cordes.
Voici une boucle de remplacement de la méthode... pas très rapide, mais une manière de le résoudre...
string result = "string to cut ' stuff. ! out of";
".',!@".ToCharArray().ToList().ForEach(a => result = result.Replace(a.ToString(),""));
Cela suppose que vous voulez placer dans la chaîne d'origine, pas une nouvelle chaîne ou une liste.