7
votes

Split le texte en phrases en C #

Je veux diviser un texte en phrases. Une phrase se termine par (point) ou? ou ! suivi d'un ou plusieurs caractères de blanchissage suivis et la phrase suivante commence par une lettre majuscule.

Par exemple:

première phrase. Deuxième phrase!

Comment puis-je faire ça?


3 commentaires

Comment géreriez-vous cela: »quand il est venu à la maison, il a crié« Hey! Quelqu'un là-bas? ", Puis ouvrit la porte et entra-t-il." ou vous avez un contrôle très strict sur l'entrée?


J'ai ajouté une expression régulière dans ma réponse qui considère cette affaire. Ref Regexlib.com/redetails.aspx?regexp_id=2355


@Fredrik Mörk Votre exemple est un cas particulièrement intéressant. Je gérerais comme une phrase unique


4 Réponses :


4
votes

Avez-vous essayé string.split () ? Voir les docs à propos de ce ici


1 commentaires

Oui, je l'ai fait, mais ce n'est pas suffisant. Dans le texte, il y a des liens. (Ex: www.mysite.it)



4
votes

Essayez ceci ( MSDN ) XXX


0 commentaires

34
votes

Vous pouvez vous séparer d'une expression régulière qui correspond à l'espace blanc, avec un lookbehind qui recherche les terminateurs de phrase: xxx

Ceci sera divisé sur les caractères d'espace blanc et conserver les terminateurs dans le Phrases.

Exemple: xxx

sortie: xxx


6 commentaires

Merci merci merci !!!!!!!!!!!!! Merci merci merci de vous remercier ..Merci une tonne ... Aviait ce mal..was lutter avec string.split () fonction qui ne permet qu'un seul caractère unique.


Soyez prudent parce que cela ne fonctionnerait pas pour des choses comme «Hello M. & Mme Smith».


@Yodacheese: Oui, c'est vrai. Il faudra une analyse très avancée du sens de la phrase pour attraper quand une période se termine réellement une phrase. Considérez par exemple les phrases «L'honorifique est M. Smith est le nom de famille». .


Vous pouvez ajouter des ellipsis: @ "(? <= ([\. \? \?]) | (\. {3})) \ s +"


C'est une très mauvaise solution


@AX: Pourquoi pensez-vous?



5
votes

Quelles langues voulez-vous soutenir? Par exemple, dans thaï, il n'y a pas d'espaces entre les mots et les phrases ne sont séparés d'espace. Donc, en général, cette tâche est très complexe. Considérez également le commentaire utile de Fredrik Mörk.

Donc, au début, vous devez définir un ensemble de règles sur quelle "phrase" est. Ensuite, vous êtes invité à utiliser l'une des solutions suggérées.


2 commentaires

Je veux soutenir principalement l'anglais. Il y a beaucoup d'état particulier. Par exemple, je dois envisager des abréviations (Dr. Jekyll)


Cela devrait être un commentaire car il n'y a pas de réponse ici, ne demandez qu'une mise à jour dans la question.