23 Nov 2017
This post shows you how to create an extension method for returning formatted HTML from a string input
For example if we wanted to make dolor sit be bold in the below text.
Lorem ipsum *dolor sit* amet
The result will be
Lorem ipsum dolor sit amet
using System.Web; using System.Web.Mvc;
namespace CodeShare.Library { public static class HtmlExtensions { /// This HTML extension method replaces characters with HTML tags public static IHtmlString ReplaceStringWithHtmlTags(this HtmlHelper helper, string originalText, string toMatch, string tagToReplaceWith, string className = "") { string result = originalText;
if (!string.IsNullOrEmpty(result) && !string.IsNullOrEmpty(toMatch) && !string.IsNullOrEmpty(tagToReplaceWith)) { int firstInstance = originalText.IndexOf(toMatch); int lastInstance = originalText.LastIndexOf(toMatch); if (lastInstance > firstInstance) { result = originalText.Remove(lastInstance, toMatch.Length).Insert(lastInstance, string.Format("</{0}>", tagToReplaceWith)); } if (firstInstance >= 0) { if (!string.IsNullOrEmpty(className)) { result = result.Remove(firstInstance, toMatch.Length).Insert(firstInstance, string.Format("<{0} class=\"{1}\">", tagToReplaceWith, className)); } else { result = result.Remove(firstInstance, toMatch.Length).Insert(firstInstance, string.Format("<{0}>", tagToReplaceWith)); } } }
return MvcHtmlString.Create(result); } } }
Here is the usage example:
string inputText = "Lorem ipsum *dolor sit* amet" @Html.ReplaceStringWithHtmlTags(inputText, "*", "strong")
And it will return Html like this:
Lorem ipsum <strong>dolor sit</strong> amet
There is an optional className parameter too, in case you need to add a class to the html element.