我知道句子集合只是一堆范围,但我无法准确确定用于确定这些范围开始和结束位置的标准。我能够确定一个句点(。),一个问号(?)或一个感叹号(!)后跟一个或多个空格是一个句子的结尾,并且这些空格包含在句子范围内。我还确定如果你和我之间没有空格会考虑两个句子,MS-Word认为它只是一个句子。
问题是当你开始输入标签,分页符,新行字符等内容时,事情变得不清楚。任何人都可以准确地解释或指向我一些参考资料MS-Word使用什么标准来决定一个句子结束而另一个句子开始的位置?
答案 0 :(得分:0)
似乎是基于句子结尾类型的分隔符(例如“。”,“!”,“?”)。如果你解释你想要做什么或发布一些代码,更多的人会愿意提供帮助。
如果您担心组合句子(例如,这是一个句子。即使它已被删除),您可以扩展这种基本方法。特殊字符似乎更难处理。所以建议你提出你要做的事情
Sub sent_counter()
Dim s As Integer
For s = 1 To ActiveDocument.Sentences.Count
ActiveDocument.Sentences(s) = splitSentences(ActiveDocument.Sentences(s))
Next s
End Sub
Function splitSentences(s As String) As String
Dim delims As New Collection
Dim delim As Variant
delims.Add "."
delims.Add "!"
delims.Add "?"
Dim ender As String
Dim sub_s As String
s = Trim(s)
ender = Right(s, 1)
sub_s = Left(s, Len(s) - 1)
For Each delim In delims
If InStr(1, sub_s, delim) Then
sub_s = Replace(sub_s, delim, delim & " ")
End If
Next delim
splitSentences = sub_s & ender
End Function