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

40 lines
1.0 KiB
C#

using System.Text;
namespace Argus.Infrastructure;
public static class IdentifierUtility
{
public static string Normalize(string? value, string fallback)
{
if (string.IsNullOrWhiteSpace(value))
{
return fallback;
}
var builder = new StringBuilder(value.Length);
var lastWasSeparator = false;
foreach (var character in value.Trim().ToLowerInvariant())
{
if (char.IsLetterOrDigit(character))
{
builder.Append(character);
lastWasSeparator = false;
continue;
}
if (character is '-' or '_' or '.')
{
if (!lastWasSeparator)
{
builder.Append(character);
lastWasSeparator = true;
}
}
}
var normalized = builder.ToString().Trim('-', '_', '.');
return string.IsNullOrWhiteSpace(normalized) ? fallback : normalized;
}
}