MakePascal identifier (the XmlSerializer way)

In a previous post, I proposed an implementation of a simple method to make the first letter of an identifier uppercase, to get a pseudo PascalCase from an xml name. I’ve found that a better and more consistent way is to reuse the method used by the XmlSerializer to build the code identifiers, which is System.Xml.Serialization.CodeIdentifier.MakePascal(string identifier)`` The class also exposes MakeValid and MakeCamel methods, which are usefull too. MakeValid is automatically called by the other two.

The pascal casing implementation is the following (reflectoring - that is, using Reflector):


    public static string MakePascal(string identifier)
    { 
      char ch1;
      identifier = CodeIdentifier.MakeValid(identifier);
      if (identifier.Length 

Using the ToCharArray() approach looks to me like a little more efficient string handling. The code above, near the end concatenates two strings, building a third one which is returned. If it used something like the following, it would save those two temporary strings:


      if (char.IsLower(identifier.Chars[0]))
      {
        Char[] letters = identifier.ToCharArray();
        letters[0] = Char.ToUpper( letters[0] );
        return new string( letters );
      }
    }

By the way, it looks like readers’ concerns with regards to I18N are non-issues, as the .NET class uses the same approach I showed, basically making a unicode Char uppercase. Finally, note that this is not actually PascalCase, but only FirstLetterUpperCase, although such a method name wouldn’t be cool at all…

/kzu

Tags: .NET XML