什么定义MS-Word中的句子?

时间:2014-03-06 22:19:39

标签: vba ms-word

我知道句子集合只是一堆范围,但我无法准确确定用于确定这些范围开始和结束位置的标准。我能够确定一个句点(。),一个问号(?)或一个感叹号(!)后跟一个或多个空格是一个句子的结尾,并且这些空格包含在句子范围内。我还确定如果你和我之间没有空格会考虑两个句子,MS-Word认为它只是一个句子。

问题是当你开始输入标签,分页符,新行字符等内容时,事情变得不清楚。任何人都可以准确地解释或指向我一些参考资料MS-Word使用什么标准来决定一个句子结束而另一个句子开始的位置?

1 个答案:

答案 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