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.

Paul Seal

Umbraco MVP and .NET Web Developer from Derby (UK) who specialises in building Content Management System (CMS) websites using MVC with Umbraco as a framework. Paul is passionate about web development and programming as a whole. Apart from when he's with his wife and son, if he's not writing code, he's thinking about it or listening to a podcast about it.

Proudly sponsored by

Moriyama

  • Moriyama build, support and deploy Umbraco, Azure and ASP.NET websites and applications.
AppVeyor

  • CI/CD service for Windows, Linux and macOS
  • Build, test, deploy your apps faster, on any platform.
elmah.io

  • elmah.io is the easy error logging and uptime monitoring service for .NET.
  • Take back control of your errors with support for all .NET web and logging frameworks.
uSync Complete

  • uSync.Complete gives you all the uSync packages, allowing you to completely control how your Umbraco settings, content and media is stored, transferred and managed across all your Umbraco Installations.
uSkinned

  • More than a theme for Umbraco CMS, take full control of your content and design with a feature-rich, award-nominated & content editor focused website platform.
UmbHost

  • Affordable, Geo-Redundant, Umbraco hosting which gives back to the community by sponsoring an Umbraco Open Source Developer with each hosting package sold.