2009-09-30 79 views
4

我有一個Word文檔,我想打開並用「test」一詞替換社會安全號碼的所有實例。在MS Word中使用正則表達式替換文本 - C#

我已經有打開文檔的代碼。這是可以替代的代碼。不過,我在此處使用正則表達式時遇到問題:_wordApp.Selection.Find.Text =;我的代碼中有。使用正則表達式是一種好方法還是有更好的方法?請記住,我必須匹配任何社會安全號碼......因此:\ b [0-9] {3} - [0-9] {2} - [0-9] {4} \ b OR \ b [0-9] {3} [0-9] {2} [0-9] {4} \ b

預先感謝...

object replaceAll = Werd.WdReplace.wdReplaceAll; 

_wordApp.Selection.Find.ClearFormatting(); 
_wordApp.Selection.Find.Text = ; 

_wordApp.Selection.Find.Replacement.ClearFormatting(); 
_wordApp.Selection.Find.Replacement.Text = "test"; 

_wordApp.Selection.Find.Execute(ref nullobj, ref nullobj, ref nullobj, ref nullobj, 
       ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, 
       ref replaceAll, ref nullobj, ref nullobj, ref nullobj, ref nullobj); 

回答

4

MS Word有一個通配符匹配能力它不像正則表達式那麼強大,但它看起來能夠匹配像社會安全號碼這樣的簡單模式。

(該<和>通配符匹配的開始和結束字邊界)。

_wordApp.Selection.Find.ClearFormatting(); 
_wordApp.Selection.Find.MatchWildcards = true; 
_wordApp.Selection.Find.Text = "<[0-9]{3}-[0-9]{2}-[0-9]{4}>"; // SSN with dashes. 

_wordApp.Selection.Find.Replacement.ClearFormatting(); 
_wordApp.Selection.Find.Replacement.Text = "test"; 

_wordApp.Selection.Find.ClearFormatting(); 
_wordApp.Selection.Find.MatchWildcards = true; 
_wordApp.Selection.Find.Text = "<[0-9]{9}>"; // SSN without dashes. 

_wordApp.Selection.Find.Replacement.ClearFormatting(); 
_wordApp.Selection.Find.Replacement.Text = "test"; 
+0

這個答案是很接近。我不得不在這裏和那裏做一些調整,但是我最終得到了一些工作代碼......謝謝Chris .. – Woody 2009-10-02 14:35:50