丽莎需要一种方法来查找文档所有段落中的最后两个单词,并用不间断的空格替换这些单词之间的空格。她想知道使用“查找和替换”是否可能。

在不使用宏的情况下执行此操作的最简单方法是依靠“查找和替换”的通配符功能。做到这一点的关键是要记住,您实际上不需要识别所找到内容中的最后两个单词,只需要识别带有最后空格的最后一个单词即可。请按照下列步骤操作:

。按Ctrl + H。 Word将显示“查找和替换”对话框的“替换”选项卡。

。单击更多按钮(如果可见)。 (请参见图1。)

。选择使用通配符复选框。

。在“查找内容”框中,输入以下内容:()([0-9A-Za-z〜-] \ {1,})([。\!\?\:])(^ 13)。在“替换为”框中,输入:^ s \ 2 \ 3 \ 4。单击全部替换。

这实际上如何工作可能只需要一点解释。这里的技巧是在步骤4中指定要搜索的内容。每个要搜索的元素都用(括号)括起来,因此很容易挑选出来并在“替换为”框中引用它们(步骤5)。 “查找内容”框中的四个元素(再次用括号括起来)如下:

。 ()

。 ([0-9A-Za-z〜-] \ {1,})

。 ([。\!\?\ ::])

。 (^ 13)

第一个元素是单个空格。第二个是任意数量的数字,字母或破折号。 (这是该元素的最后一部分-\ {1,}-指定可以有任意数量的数字,字母或破折号。)这是一个元素,用于指定段落末尾的单词,并且包括单词中包含破折号的可能性,因此复合单词将被视为一个单词。第三个元素是所示的任何标点符号,第四个元素是实际的段落结尾标记。

“替换为”规范(第5步)仅将第一个元素(空格)替换为不间断的空格,然后将第二个,第三个和第四个元素放回原处。

应该注意的是,在几种情况下,这种“查找和替换”方法将行不通。首先,如果您的段落在标点符号和段落结尾标记之间有尾随空格,则将无法使用。在执行上述“查找和替换”操作之前,可以使用“查找和替换”操作来消除文档中的所有内容。

第二种不起作用的情况是,如果您的段落以复合标点结尾,例如句点后加引号或引号后加冒号。通配符搜索期望在段落末尾只有一个标点符号,并且它必须是指定的四个标点符号之一。

第三种不起作用的情况是该段落的最后一个单词中是否有标点符号。例如,如果最后一个单词实际上是一个数字,例如1,234,则包含逗号将阻止匹配的发生。这可以通过在要搜索的第二个元素中包括逗号来解决,但是这种情况发生的次数似乎很小,以至于我在上述步骤中不允许这样做。

如果您更喜欢基于宏的替换方法,则可以考虑使用以下宏:

Sub LastTwo()

Dim p As Paragraph     Dim J As Integer     Dim K As Integer     Dim sTemp As String

For Each p In ActiveDocument.Paragraphs         J = p.Range.Words.Count         For K = J To 1 Step -1             sTemp = p.Range.Words(K)

If Right(sTemp, 1) = " " Then                 p.Range.Words(K) = RTrim(sTemp) & Chr(160)

K = 1             End If         Next K     Next p End Sub

宏逐步浏览文档的每个段落,然后向后浏览段落中的单词。它寻找包含尾随空格的第一个单词,然后用不间断空格替换该空格。

此宏有一件有趣的事情-它可能无法在所有系统上正常工作。如果在运行它之后,您没有得到一个不间断的空格,而是在最后两个单词之间看到一个小的“叉号”,那么只需将代码中的Chr(160)替换为Chr(202)。如果Word包含一个不间断空格的已定义枚举,则会容易得多,但事实并非如此。取而代之的是,您需要依靠ASCII码来获得不间断的空格,这在所有系统上似乎都不尽相同。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(13577)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。