One of the popular uses cases related to the documents is finding and replacing the text programmatically. There could be multiple cases when you need to replace a word or phrase in the document. For example, you want to censor the content before sharing the document publically or you want to hide/remove all the email IDs or Social Security Numbers provided in the document before putting it online.
So in this article, I am going to target this use case and will show you how you could easily find and replace your desired text in documents programmatically using C#. For this, I will use GroupDocs.Redaction for .NET API which provides multiple ways to hide or replace text in the popular formats of MS Word, Excel, PowerPoint, and PDF documents.
So you don’t need MS Office, PDF editor or any other third party software in this scenario. Let’s now begin and have a look at different approaches to deal with finding and replacing text in the documents. The following is the screenshot of a Word document that I have used in the examples for demonstration. The same methods will work for other document formats I have mentioned above without any change in the code.
Find and replace a word or phrase
This is how you can replace a single word or phrase in the document.
using GroupDocs.Redaction;
using GroupDocs.Redaction.Redactions;
...
using (Document doc = Redactor.Load("sample.docx"))
{
doc.RedactWith(new ExactPhraseRedaction("John Doe", new ReplacementOptions("[censored]")));
doc.Save();
}
Output
Find and replace case-sensitive word or phrase
In case you want to replace text considering its case sensitivity, use the following code.
using GroupDocs.Redaction;
using GroupDocs.Redaction.Redactions;
...
using (Document doc = Redactor.Load("sample.docx"))
{
doc.RedactWith(new ExactPhraseRedaction("John Doe", true /*isCaseSensitive*/, new ReplacementOptions("[censored]")));
doc.Save();
}
Output
Find and replace text using regular expressions (regex)
If you need to replace the text occurrences that are following a particular pattern, for example SS#, you can do it using the regular expressions.
using GroupDocs.Redaction;
using GroupDocs.Redaction.Redactions;
...
using (Document doc = Redactor.Load("sample.docx"))
{
// Regex to match a number having 2 digits, space, 2 digits, space, 6 digits
doc.RedactWith(new RegexRedaction(@"\\d{2}\\s*\\d{2}[^\\d]*\\d{6}", new ReplacementOptions("[censored]")));
doc.Save();
}
Output
Find and replace the text with colored box
You can also replace your desired text with a colored box.
using GroupDocs.Redaction;
using GroupDocs.Redaction.Redactions;
...
using (Document doc = Redactor.Load("sample.docx"))
{
doc.RedactWith(new ExactPhraseRedaction("John Doe", true, new ReplacementOptions(System.Drawing.Color.Black)));
doc.Save();
}
Output
Cheers!
See Also
Extract Text from PDF C#
Extract Text from PowerPoint C#
Find and Replace Text in Excel C#
Find and Replace Text in Word C#
Find and Replace Text in PDF C#
Top comments (2)
Great article. Keep up the good work.
Useless
Some comments have been hidden by the post's author - find out more