Imports System.Text.RegularExpressions
Imports System.Runtime.CompilerServices
Dim jAndM As String = "J&M"
Dim jSpaceAndSpaceM As String = "J & M"
Console.WriteLine("J&M Slugged: " + jandm.ToSlug())
Console.WriteLine("J & M Slugged: " + jSpaceAndSpaceM.ToSlug())
Console.WriteLine("JM Slugged: " + jm.ToSlug())
Console.WriteLine("J&M UnSlugged: " + jandm.ToSlug().UnSlug())
Console.WriteLine("J & M UnSlugged: " + jSpaceAndSpaceM.ToSlug().UnSlug())
Console.WriteLine("JM UnSlugged: " + jm.ToSlug().UnSlug())
Dim querystring As String = "%3Fmanu%3Dgmc%26model%3Dsierra%26year%3D1995"
querystring = "?manu=gmc &model&sierra&year&1995"
Console.WriteLine("Slugged Querystring: " + querystring.ToSlug())
Public Function ToSlug(value As String, Optional underscore As Boolean = False) As String
If String.IsNullOrEmpty(value) Then Return value
value = HttpUtility.UrlDecode(value)
value = value.ToLowerInvariant.Trim()
If(value.Contains(" & ")) Then
value = value.Replace(" & ", " and ")
ElseIf value.Contains("&") Then
value = value.Replace("&", " and ")
value = value.Replace("/", " / ")
value = Regex.Replace(value, "[^a-z0-9\s-]", String.Empty)
If underscore Then value = Regex.Replace(value, "\s", "_")
value = Regex.Replace(value, "[\s-]+", " ")
value = Regex.Replace(value, "\s", "-")
Public Function UnSlug(value As String, Optional removeAnd As Boolean = False) As String
If String.IsNullOrEmpty(value) Then Return value
value = value.Replace("and", String.Empty)
Return value.Replace("-", " ").Replace("_", " ")