37 lines
811 B
C#
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();
|
|
}
|
|
} |