2024-08-19 01:22:48 -05:00
|
|
|
|
using System.Globalization;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Text.RegularExpressions;
|
2023-01-04 00:36:49 -06:00
|
|
|
|
|
2024-08-04 18:44:33 -05:00
|
|
|
|
namespace LANCommander.Server.Extensions
|
2023-01-04 00:36:49 -06:00
|
|
|
|
{
|
|
|
|
|
|
public static class StringExtensions
|
|
|
|
|
|
{
|
2024-08-19 01:22:48 -05:00
|
|
|
|
static readonly Regex WordDelimiters = new Regex(@"[\s—–_]", RegexOptions.Compiled);
|
|
|
|
|
|
static readonly Regex InvalidChars = new Regex(@"[^a-z0-9\-]", RegexOptions.Compiled);
|
|
|
|
|
|
static readonly Regex MultipleHyphens = new Regex(@"-{2,}", RegexOptions.Compiled);
|
|
|
|
|
|
|
|
|
|
|
|
private static string RemoveDiacritics(string stIn)
|
|
|
|
|
|
{
|
|
|
|
|
|
string stFormD = stIn.Normalize(NormalizationForm.FormD);
|
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
|
|
for (int ich = 0; ich < stFormD.Length; ich++)
|
|
|
|
|
|
{
|
|
|
|
|
|
UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
|
|
|
|
|
|
|
|
|
|
|
|
if (uc != UnicodeCategory.NonSpacingMark)
|
|
|
|
|
|
sb.Append(stFormD[ich]);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return (sb.ToString().Normalize(NormalizationForm.FormC));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-04 00:36:49 -06:00
|
|
|
|
public static string SanitizeFilename(this string filename, string replacement = "")
|
|
|
|
|
|
{
|
|
|
|
|
|
var removeInvalidChars = new Regex($"[{Regex.Escape(new string(Path.GetInvalidFileNameChars()))}]", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.CultureInvariant);
|
|
|
|
|
|
|
|
|
|
|
|
return removeInvalidChars.Replace(filename, replacement);
|
|
|
|
|
|
}
|
2023-01-09 01:35:08 -06:00
|
|
|
|
|
|
|
|
|
|
public static string ToPath(this string path)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Path.Combine(path.Split("/"));
|
|
|
|
|
|
}
|
2023-01-04 00:36:49 -06:00
|
|
|
|
}
|
|
|
|
|
|
}
|