RangeReplace Method (Regex, String, FindReplaceOptions) |
Namespace: Aspose.Words
Replaces the whole match captured by the regular expression.
Method is able to process breaks in both pattern and replacement strings.
You should use special meta-characters if you need to work with breaks:Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.Writeln("a1, b2, c3"); // Replaces each number with paragraph break. doc.Range.Replace(new Regex(@"\d+"), "&p", new FindReplaceOptions());
Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.Writeln("sad mad bad"); Assert.AreEqual("sad mad bad", doc.GetText().Trim()); FindReplaceOptions options = new FindReplaceOptions(); options.MatchCase = false; options.FindWholeWordsOnly = false; doc.Range.Replace(new Regex("[s|m]ad"), "bad", options); Assert.AreEqual("bad bad bad", doc.GetText().Trim());
public void InsertDocumentAtReplace() { Document mainDoc = new Document(MyDir + "Document insertion destination.docx"); FindReplaceOptions options = new FindReplaceOptions(); options.Direction = FindReplaceDirection.Backward; options.ReplacingCallback = new InsertDocumentAtReplaceHandler(); mainDoc.Range.Replace(new Regex("\\[MY_DOCUMENT\\]"), "", options); mainDoc.Save(ArtifactsDir + "InsertDocument.InsertDocumentAtReplace.doc"); } private class InsertDocumentAtReplaceHandler : IReplacingCallback { ReplaceAction IReplacingCallback.Replacing(ReplacingArgs args) { Document subDoc = new Document(MyDir + "Document.docx"); // Insert a document after the paragraph, containing the match text Paragraph para = (Paragraph) args.MatchNode.ParentNode; InsertDocument(para, subDoc); // Remove the paragraph with the match text para.Remove(); return ReplaceAction.Skip; } }
public void ReplaceWithInsertHtml() { // Open the document Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.Writeln("Hello <CustomerName>,"); FindReplaceOptions options = new FindReplaceOptions(); options.ReplacingCallback = new ReplaceWithHtmlEvaluator(options); doc.Range.Replace(new Regex(@" <CustomerName>,"), string.Empty, options); // Save the modified document doc.Save(ArtifactsDir + "Range.ReplaceWithInsertHtml.doc"); } private class ReplaceWithHtmlEvaluator : IReplacingCallback { internal ReplaceWithHtmlEvaluator(FindReplaceOptions options) { mOptions = options; } /// <summary> /// NOTE: This is a simplistic method that will only work well when the match /// starts at the beginning of a run. /// </summary> ReplaceAction IReplacingCallback.Replacing(ReplacingArgs args) { DocumentBuilder builder = new DocumentBuilder((Document) args.MatchNode.Document); builder.MoveTo(args.MatchNode); // Replace '<CustomerName>' text with a red bold name builder.InsertHtml("<b><font color='red'>James Bond, </font></b>"); args.Replacement = ""; return ReplaceAction.Replace; } private readonly FindReplaceOptions mOptions; }