Skip to content

Commit 08cbe5a

Browse files
committed
CamelCase
1 parent 78d2d00 commit 08cbe5a

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

WebApiClient/FormatOptions.cs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,25 +80,31 @@ public FormatOptions CloneChange(string datetimeFormat)
8080
/// <returns></returns>
8181
public static string CamelCase(string name)
8282
{
83-
if (string.IsNullOrEmpty(name) == true)
83+
if (string.IsNullOrEmpty(name) || char.IsUpper(name[0]) == false)
8484
{
8585
return name;
8686
}
8787

88-
return Regex.Replace(name, @"^[A-Z]+", m =>
88+
var charArray = name.ToCharArray();
89+
for (int i = 0; i < charArray.Length; i++)
8990
{
90-
if (m.Success == false)
91+
if (i == 1 && char.IsUpper(charArray[i]) == false)
9192
{
92-
return name;
93+
break;
9394
}
94-
if (m.Value.Length > 1)
95-
{
96-
var charArray = m.Value.ToLower().ToCharArray();
97-
charArray[charArray.Length - 1] = Char.ToUpper(charArray[charArray.Length - 1]);
98-
return new string(charArray);
95+
96+
var hasNext = (i + 1 < charArray.Length);
97+
if (i > 0 && hasNext && !char.IsUpper(charArray[i + 1]))
98+
{
99+
if (char.IsSeparator(charArray[i + 1]))
100+
{
101+
charArray[i] = Char.ToLowerInvariant(charArray[i]);
102+
}
103+
break;
99104
}
100-
return m.Value.ToLower();
101-
});
105+
charArray[i] = Char.ToLowerInvariant(charArray[i]);
106+
}
107+
return new string(charArray);
102108
}
103109
}
104110
}

0 commit comments

Comments
 (0)