From 09a729effe1c0eeccd3bbc7482923b4d1cdabfc1 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Sat, 31 Jan 2026 23:44:07 +0100 Subject: Fix tag checks --- src/Jellyfin.Extensions/StringExtensions.cs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/Jellyfin.Extensions') diff --git a/src/Jellyfin.Extensions/StringExtensions.cs b/src/Jellyfin.Extensions/StringExtensions.cs index 60df47113a..01225cf283 100644 --- a/src/Jellyfin.Extensions/StringExtensions.cs +++ b/src/Jellyfin.Extensions/StringExtensions.cs @@ -148,5 +148,30 @@ namespace Jellyfin.Extensions { return string.IsNullOrEmpty(text) ? text : text.AsSpan().LeftPart('\0').ToString(); } + + /// + /// Normalizes a string for comparison by removing diacritics, converting to lowercase, + /// replacing punctuation/special characters with spaces, and collapsing whitespace. + /// + /// The string to normalize. + /// The normalized string, or the original if null/whitespace. + public static string GetCleanValue(this string value) + { + if (string.IsNullOrWhiteSpace(value)) + { + return value; + } + + // Remove diacritics and convert to lowercase + var cleaned = value.RemoveDiacritics().ToLowerInvariant(); + + // Replace all punctuation and special characters with spaces + cleaned = Regex.Replace(cleaned, @"[^\p{L}\p{N}\s]", " "); + + // Collapse multiple spaces into single space and trim + cleaned = Regex.Replace(cleaned, @"\s+", " ").Trim(); + + return cleaned; + } } } -- cgit v1.2.3