gandalf-reborn/Data/Extensions/StringExtensions.cs
2025-03-02 12:51:02 +01:00

37 lines
811 B
C#

using System.Text;
namespace W542.GandalfReborn.Data.Extensions;
public static class StringExtensions
{
public static string ToSnakeCase(this string text)
{
if (text == null)
{
throw new ArgumentNullException(nameof(text));
}
if (text.Length < 2)
{
return text.ToLowerInvariant();
}
var sb = new StringBuilder();
sb.Append(char.ToLowerInvariant(text[0]));
for (int i = 1; i < text.Length; ++i)
{
char c = text[i];
if (char.IsUpper(c))
{
sb.Append('_');
sb.Append(char.ToLowerInvariant(c));
}
else
{
sb.Append(c);
}
}
return sb.ToString();
}
}