Aspose.Words for .NET查找和替換教程——使用元字符查找和替換文本
Aspose.Words For .Net是一種高級(jí)Word文檔處理API,用于執(zhí)行各種文檔管理和操作任務(wù)。API支持生成,修改,轉(zhuǎn)換,呈現(xiàn)和打印文檔,而無(wú)需在跨平臺(tái)應(yīng)用程序中直接使用Microsoft Word。此外,API支持所有流行的Word處理文件格式,并允許將Word文檔導(dǎo)出或轉(zhuǎn)換為固定布局文件格式和最常用的圖像/多媒體格式。
接下來(lái)我們將進(jìn)入“查找和替換”的介紹,在Aspose.Words中使用元字符查找和替換文本。
>>Aspose.Words for .NET更新至最新版v19.11,歡迎下載體驗(yàn)
Aspose優(yōu)惠進(jìn)行時(shí)——購(gòu)買(mǎi)Aspose系列產(chǎn)品有機(jī)會(huì)獲得iPhone 11等驚喜豪禮!更多活動(dòng)詳情可咨詢(xún)?cè)诰€客服哦~
如何在替換期間保留元字符
如果要在查找和替換過(guò)程中保留以“&”開(kāi)頭的元字符,則可以使用FindReplaceOptions.PreserveMetaCharacters屬性。下面的代碼示例演示如何查找文本并將其替換為具有元字符的HTML。
//文檔目錄的路徑。 string dataDir = RunExamples.GetDataDir_FindAndReplace(); string html = @"“Some Text”"; //初始化文檔。 Document doc = new Document(); //使用文檔構(gòu)建器向文檔添加內(nèi)容。 DocumentBuilder builder = new DocumentBuilder(doc); builder.Write("{PLACEHOLDER}"); var findReplaceOptions = new FindReplaceOptions { ReplacingCallback = new FindAndInsertHtml(), PreserveMetaCharacters = true }; doc.Range.Replace("{PLACEHOLDER}", html, findReplaceOptions); dataDir = dataDir + "ReplaceHtmlTextWithMetaCharacters_out.doc"; doc.Save(dataDir);
public sealed class FindAndInsertHtml : IReplacingCallback { ReplaceAction IReplacingCallback.Replacing(ReplacingArgs e) { // 這是一個(gè)Run節(jié)點(diǎn),其中包含開(kāi)始或完全匹配。 Node currentNode = e.MatchNode; //創(chuàng)建Document Buidler并插入MergeField DocumentBuilder builder = new DocumentBuilder(e.MatchNode.Document as Document); builder.MoveTo(currentNode); builder.InsertHtml(e.Replacement); currentNode.Remove(); //向替換引擎發(fā)出信號(hào),表示什么都不做,因?yàn)槲覀円呀?jīng)完成了所有想要做的事情。 return ReplaceAction.Skip; } }
使用元字符替換文本
Range.Replace方法支持搜索模式和替換字符串中的中斷。您需要使用特殊的元字符來(lái)指定分隔符:&p代表段落分隔符,&b代表分節(jié)符,&m代表分頁(yè)符,&l代表手動(dòng)換行符。下面的代碼示例顯示了如何替換包含段落和分頁(yè)符的文本。
// 初始化文檔。 Document doc = new Document(); // 使用文檔構(gòu)建器向文檔添加內(nèi)容。 DocumentBuilder builder = new DocumentBuilder(doc); builder.Writeln("This is Line 1"); builder.Writeln("This is Line 2"); var findReplaceOptions = new FindReplaceOptions(); doc.Range.Replace("This is Line 1&pThis is Line 2", "This is replaced line", findReplaceOptions); builder.MoveToDocumentEnd(); builder.Write("This is Line 1"); builder.InsertBreak(BreakType.PageBreak); builder.Writeln("This is Line 2"); doc.Range.Replace("This is Line 1&mThis is Line 2", "Page break is replaced with new text.", findReplaceOptions); dataDir = dataDir + "MetaCharactersInSearchPattern_out.docx"; doc.Save(dataDir);
下面的代碼示例顯示如何用新的段落分隔符替換某些段落分隔符以及如何用分節(jié)符替換自定義文本標(biāo)記。
Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.Font.Name = "Arial"; builder.Writeln("First section"); builder.Writeln(" 1st paragraph"); builder.Writeln(" 2nd paragraph"); builder.Writeln("{insert-section}"); builder.Writeln("Second section"); builder.Writeln(" 1st paragraph"); FindReplaceOptions options = new FindReplaceOptions(); options.ApplyParagraphFormat.Alignment = ParagraphAlignment.Center; // 將“ section”一詞后的每個(gè)段落加倍,添加下劃線并使其居中。 int count = doc.Range.Replace("section&p", "section&p----------------------&p", options); // 插入分節(jié)符而不是自定義文本標(biāo)簽。 count = doc.Range.Replace("{insert-section}", "&b", options); dataDir = dataDir + "ReplaceTextContaingMetaCharacters_out.docx"; doc.Save(dataDir);
還想要更多嗎?您可以點(diǎn)擊閱讀【2019 · Aspose最新資源整合】,查找需要的教程資源。如果您有任何疑問(wèn)或需求,請(qǐng)隨時(shí)加入Aspose技術(shù)交流群(642018183),我們很高興為您提供查詢(xún)和咨詢(xún)。
如果您對(duì)Aspose有任何需求和疑難,記得掃描下方二維碼告訴我們哦~