2017-10-20 3 views
0

Ich fragte mich, ob es einen einfachen Weg in SAS gibt, Sätze in einer Zeichenfolge zu zählen?Graf Anzahl der Sätze in einer Zeichenfolge in SAS

In Pseudo-Code würde ich für den Index von jeder Suche ., ? und !, und prüfen Sie, ob der Index vor, dass (-1 oder -2) ein Zeichen.

Irgendwelche besseren Ideen?

Antwort

2

Unter der Annahme, dass Ihre Sätze korrekt interpunktiert sind, sollte es genau 1 Satz pro ?!. geben, in diesem Fall können Sie verwenden. Die hauptsächlichen Ausnahmen sind wahrscheinlich Interrobangen (?!, !?) und Ellipsen (...).

Wenn Ihre Zeichenfolge viele Sätze mit fehlenden Stopps oder doppelten Stopps enthält, besteht eine Möglichkeit darin, einfach die Daumen zu drücken und zu hoffen, dass sie sich mehr oder weniger aufheben.

Wenn es viele Doppelstopps gibt, aber nicht so viele fehlende, könnten Sie eine Regex anwenden, um jeden Durchlauf aufeinanderfolgender Stops durch einen einzigen . zu ersetzen, bevor diese z. countc(prxchange('s/[\.!\?]{2,}/./',-1,string),'?!.').

+0

Sie können doppelte Stopps oder Sätze berücksichtigen, die sowohl durch ein Fragezeichen als auch durch ein Ausrufezeichen (scheinbar "interrobang" genannt) unter Verwendung von regulären Ausdrücken gekennzeichnet sind. – user2877959

+0

Entweder sollte Ihr Regex '+' (oder '{1,}') anstelle von '{2,}' enthalten, um einzelne Fragezeichen und Ausrufezeichen durch Punkte zu ersetzen. oder Ihre 'countc' Funktion sollte weiterhin'? 'und'! – user2877959

+0

Messepunkt - behoben. – user667489

Verwandte Themen