我想知道SAS中是否有一种简单的方法来计算字符串中的句子?
在伪代码中,我会搜索每个.
,?
和!
的索引,并检查之前的索引(-1
或{{1 }})是一个角色。
有更好的想法吗?
答案 0 :(得分:2)
假设你的句子被正确地标点,每?!.
个句子应该只有一个句子,所以在这种情况下你可以使用countc(my_string,'?!.')
。主要的例外情况可能是interrobangs(?!
,!?
)和省略号(...
)。
如果你的字符串中包含大量没有停止或双停的句子,一个选项只是交叉你的手指,希望他们或多或少取消。
如果有很多双重停靠但没有那么多丢失的停止,你可以应用正则表达式来替换任何连续停止运行的单个.
,然后再计算它们,例如countc(prxchange('s/[\.!\?]{2,}/./',-1,string),'?!.')
。