What is this for?
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
Here is the code to make it work:
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.