aboutsummaryrefslogtreecommitdiff
path: root/src/Jellyfin.Extensions/StringExtensions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Jellyfin.Extensions/StringExtensions.cs')
-rw-r--r--src/Jellyfin.Extensions/StringExtensions.cs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/Jellyfin.Extensions/StringExtensions.cs b/src/Jellyfin.Extensions/StringExtensions.cs
index 9d8afc23c..8cfebd594 100644
--- a/src/Jellyfin.Extensions/StringExtensions.cs
+++ b/src/Jellyfin.Extensions/StringExtensions.cs
@@ -1,5 +1,6 @@
using System;
using System.Text.RegularExpressions;
+using ICU4N.Text;
namespace Jellyfin.Extensions
{
@@ -8,6 +9,9 @@ namespace Jellyfin.Extensions
/// </summary>
public static partial class StringExtensions
{
+ private static readonly Lazy<Transliterator> _transliterator = new(() => Transliterator.GetInstance(
+ "Any-Latin; Latin-Ascii; Lower; NFD; [:Nonspacing Mark:] Remove; [:Punctuation:] Remove;"));
+
// Matches non-conforming unicode chars
// https://mnaoumov.wordpress.com/2014/06/14/stripping-invalid-characters-from-utf-16-strings/
@@ -96,5 +100,15 @@ namespace Jellyfin.Extensions
return haystack[(pos + 1)..];
}
+
+ /// <summary>
+ /// Returns a transliterated string which only contain ascii characters.
+ /// </summary>
+ /// <param name="text">The string to act on.</param>
+ /// <returns>The transliterated string.</returns>
+ public static string Transliterated(this string text)
+ {
+ return _transliterator.Value.Transliterate(text);
+ }
}
}