2016-06-27 54 views
0

我想讓下面的代碼更直觀,所以我需要添加例如「Dr.」這樣的縮寫的排除,或「N.A.S.A.」。另外,它不應該爲有小數點的數字加空格。我如何手動添加特定排除或通配符排除?如何添加排除到這個「雙空間句子」代碼?

Sub TwoSpaces() 
Selection.Find.ClearFormatting 
Selection.Find.Replacement.ClearFormatting 
With Selection.Find 
    .Text = "([.\?\!]) {1,}" 
    .Replacement.Text = "\1 " 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchWildcards = True 
End With 
Selection.Find.Execute Replace:=wdReplaceAll 
End Sub 

我也不想將它應用到文章的某些部分,如參考書目部分。我可以讓宏排除我已經標有「不檢查拼寫和語法」使用下面的代碼方面:

Selection.NoProofing = True 

回答

0

您的解決方案已經忽略小數,因爲它看起來爲一個單一的空間,他們不會有,並且對於參考書目,您可以在之後更新字段,並且添加的空格將會消失。

這會讓'Dr.'和'N.A.S.A.'

我不認爲有可能排除已關閉校樣的區域。相反,你是否嘗試過查找結果並檢查每個結果?這聽起來像你會有很多這樣的排除,我不認爲修改搜索字符串將是處理它們的最佳方式。

下面是一些例子C#代碼:

range.Find.MatchWildcards = true; 
range.Find.Text = ([.\?\!]) {1,}"; 
while (range.Find.Execute()) 
{ 
    // check each find result: range.Text 
} 
+0

感謝您的答覆。我無法弄清楚如何手動添加特定的異常。我也認爲通配符可以用來排除任何有一個以上句點的字符串,但是我對這個通配符很不好。 –

+0

我的建議基本上是「不要那樣做」,但是如果你想繼續這個策略,那麼谷歌的詞彙通配符。它基本上是一個非常有限的專門的正則表達式引擎。 – Chris

+0

可以用這樣的東西來忽略這些部分:Selection.NoProofing = True –

相關問題