2017-10-20 24 views
0

Je me demandais s'il existe un moyen facile dans SAS de compter les phrases dans une chaîne?Compte le nombre de phrases dans une chaîne dans SAS

Dans le code pseudo Je recherche de l'index de chaque ., ? et !, et vérifier si l'indice avant que (-1 ou -2) est un personnage.

De meilleures idées?

Répondre

2

En supposant que vos phrases sont correctement ponctuées, il devrait y avoir exactement 1 phrase par ?!., dans ce cas, vous pouvez utiliser countc(my_string,'?!.'). Les principales exceptions sont probablement les interrobangs (?!, !?) et les ellipses (...).

Si votre chaîne contient beaucoup de phrases avec des arrêts ou des doubles arrêts manquants, une option consiste simplement à croiser les doigts et espérer qu'ils s'annulent plus ou moins.

S'il y a beaucoup de doubles paliers mais pas tellement de paliers manquants, vous pouvez appliquer une regex pour remplacer toute palier d'arrêts consécutifs par un seul . avant de les compter, par ex. countc(prxchange('s/[\.!\?]{2,}/./',-1,string),'?!.').

+0

Vous pouvez tenir compte des doubles arrêts ou des phrases ponctués d'un point d'interrogation et d'un point d'exclamation (appelé apparemment 'interrobang') en utilisant des expressions régulières à la place. – user2877959

+0

Soit votre regex devrait avoir '+' (ou '{1,}') au lieu de '{2,}' pour remplacer aussi les points d'interrogation simples et les points d'exclamation par des points; ou votre fonction 'countc' devrait continuer à compter'? 'et'! 'au dessus de' .'. – user2877959

+0

Fair point - fixe. – user667489