31 lines
743 B
C#
31 lines
743 B
C#
|
|
using System.Reflection;
|
||
|
|
|
||
|
|
namespace Books.Api.EventFlow.Customs;
|
||
|
|
|
||
|
|
public static class Casing
|
||
|
|
{
|
||
|
|
public static string ToSnakeCase(this string input)
|
||
|
|
{
|
||
|
|
if (string.IsNullOrEmpty(input))
|
||
|
|
return input;
|
||
|
|
|
||
|
|
var stringBuilder = new System.Text.StringBuilder();
|
||
|
|
for (var i = 0; i < input.Length; i++)
|
||
|
|
{
|
||
|
|
var c = input[i];
|
||
|
|
if (char.IsUpper(c))
|
||
|
|
{
|
||
|
|
if (i > 0)
|
||
|
|
{
|
||
|
|
stringBuilder.Append('_');
|
||
|
|
}
|
||
|
|
stringBuilder.Append(char.ToLower(c));
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
stringBuilder.Append(c);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return stringBuilder.ToString();
|
||
|
|
}
|
||
|
|
}
|