File tree Expand file tree Collapse file tree 1 file changed +17
-11
lines changed
Expand file tree Collapse file tree 1 file changed +17
-11
lines changed Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments