Files
Argus/Infrastructure/SlugUtility.cs
T
Курнат Андрей 5f80c4bf6a Initial Argus web catalog
2026-06-20 19:55:11 +03:00

41 lines
996 B
C#

using System.Text;
namespace Argus.Infrastructure;
public static class SlugUtility
{
public static string Normalize(string? value)
{
if (string.IsNullOrWhiteSpace(value))
{
return string.Empty;
}
var builder = new StringBuilder(value.Length);
var lastWasHyphen = false;
foreach (var character in value.Trim().ToLowerInvariant())
{
if (char.IsLetterOrDigit(character))
{
builder.Append(character);
lastWasHyphen = false;
continue;
}
if (!lastWasHyphen)
{
builder.Append('-');
lastWasHyphen = true;
}
}
return builder.ToString().Trim('-');
}
public static bool IsValid(string? value) =>
!string.IsNullOrWhiteSpace(value) &&
value.Length <= 100 &&
string.Equals(value, Normalize(value), StringComparison.Ordinal);
}