34 lines
878 B
C#
34 lines
878 B
C#
|
|
using System.Text.RegularExpressions;
|
||
|
|
|
||
|
|
namespace SkyArtShop.Services
|
||
|
|
{
|
||
|
|
public class SlugService
|
||
|
|
{
|
||
|
|
public string GenerateSlug(string text)
|
||
|
|
{
|
||
|
|
if (string.IsNullOrWhiteSpace(text))
|
||
|
|
return string.Empty;
|
||
|
|
|
||
|
|
// Convert to lowercase
|
||
|
|
var slug = text.ToLowerInvariant();
|
||
|
|
|
||
|
|
// Replace spaces with hyphens
|
||
|
|
slug = slug.Replace(" ", "-");
|
||
|
|
|
||
|
|
// Replace & with "and"
|
||
|
|
slug = slug.Replace("&", "and");
|
||
|
|
|
||
|
|
// Remove invalid characters
|
||
|
|
slug = Regex.Replace(slug, @"[^a-z0-9\-]", "");
|
||
|
|
|
||
|
|
// Replace multiple hyphens with single hyphen
|
||
|
|
slug = Regex.Replace(slug, @"-+", "-");
|
||
|
|
|
||
|
|
// Trim hyphens from start and end
|
||
|
|
slug = slug.Trim('-');
|
||
|
|
|
||
|
|
return slug;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|