Initial Argus web catalog
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user