mirror of
https://github.com/lidarr/Lidarr
synced 2024-12-26 17:47:08 +00:00
56 lines
No EOL
1.6 KiB
C#
56 lines
No EOL
1.6 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace NzbDrone.Common
|
|
{
|
|
public static class StringExtensions
|
|
{
|
|
public static string NullSafe(this string target)
|
|
{
|
|
return ((object)target).NullSafe().ToString();
|
|
}
|
|
|
|
public static object NullSafe(this object target)
|
|
{
|
|
if (target != null) return target;
|
|
return "[NULL]";
|
|
}
|
|
|
|
public static string FirstCharToUpper(this string input)
|
|
{
|
|
return input.First().ToString().ToUpper() + String.Join("", input.Skip(1));
|
|
}
|
|
|
|
public static string Inject(this string format, params object[] formattingArgs)
|
|
{
|
|
return string.Format(format, formattingArgs);
|
|
}
|
|
|
|
private static readonly Regex CollapseSpace = new Regex(@"\s+", RegexOptions.Compiled);
|
|
|
|
public static string RemoveAccent(this string text)
|
|
{
|
|
var normalizedString = text.Normalize(NormalizationForm.FormD);
|
|
var stringBuilder = new StringBuilder();
|
|
|
|
foreach (var c in normalizedString)
|
|
{
|
|
var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
|
|
if (unicodeCategory != UnicodeCategory.NonSpacingMark)
|
|
{
|
|
stringBuilder.Append(c);
|
|
}
|
|
}
|
|
|
|
return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
|
|
}
|
|
|
|
public static string CleanSpaces(this string text)
|
|
{
|
|
return CollapseSpace.Replace(text, " ").Trim();
|
|
}
|
|
}
|
|
} |