# .NET Development Foundation/Globalization
## Globalization, Drawing, and Text manipulation

Exam objective: Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application

### Topics
#### Text manipulation

Text manipulation, in the context of the exam objectives, covers 3 main subjects: string building, regular expressions and text encoding. We look at each in the following paragraphs.

##### String and StringBuilder classes

Text manipulation starts with the representation of a string which is done via the String class. No specific exam objective mentions the String class but we added a section for it because you must understand some of its specific characteristics.
Next comes the StringBuilder class that serves for efficient construction.

##### Regular expressions

The Regex, Match and Group classes together implement the regular expressions support in the .NET framework.
Regular expressions are a world by themselves and have been around for quite some time.
There is a wikibook on regular expressions which, among other things, point to this Tutorial.
Regular expressions support in .NET basically allows for:
* testing the match of a string to a regex pattern (Regex.IsMatch method)
* extracting the substrings that "match" part of a pattern (Regex.Match method with Match and Group classes).

##### Text encoding
### Classes, Interfaces, and tools
#### Format data based on culture information.

(Refer System.Globalization namespace)

##### Access culture and region information

Exam objective: Access culture and region information in a .NET Framework application
CultureInfo class - MSDN
CultureTypes enumeration - MSDN
RegionInfo class - MSDN

##### Format date and time values based on the culture.

DateTimeFormatInfo class - MSDN

##### Format number values based on the culture.

NumberFormatInfo class - MSDN
NumberStyles enumeration - MSDN

##### Perform culture-sensitive string comparison.

CompareInfo class - MSDN
CompareOptions enumeration - MSDN

##### Custom culture

Exam objective: Build a custom culture class based on existing culture and region classes
CultureAndRegionInfoBuilder class - MSDN
CultureAndRegionModifier enumeration - MSDN

#### System.Drawing namespace

Exam objective: Enhance the user interface of a .NET Framework application by using the System.Drawing namespace.

##### Brushes, Pens, Colors and Fonts

Exam objective: Enhance the user interface of a .NET Framework application by using brushes, pens, colors, and fonts
Brush class - MSDN
Brushes class - MSDN
SystemBrushes class - MSDN
TextureBrush class - MSDN
Pen class - MSDN
Pens class - MSDN
SystemPens class - MSDN
SolidBrush class - MSDN
Color structure - MSDN
ColorConverter class - MSDN
ColorTranslator class - MSDN
SystemColors class - MSDN
StringFormat class - MSDN
Font class - MSDN
FontConverter class - MSDN
FontFamily class - MSDN
SystemFonts class - MSDN

##### Graphics, Images, Bitmaps and Icons

Exam objective: Enhance the user interface of a .NET Framework application by using graphics, images, bitmaps, and icons
Graphics class - MSDN
BufferedGraphics class - MSDN
BufferedGraphicsManager class - MSDN
Image class - MSDN
ImageConverter class - MSDN
ImageAnimator class - MSDN
Bitmap class - MSDN
Icon class - MSDN
IconConverter class - MSDN
SystemIcons class - MSDN

##### Shapes and Sizes

Exam objective: Enhance the user interface of a .NET Framework application by using shapes and sizes
Point Structure - MSDN
PointConverter class - MSDN
Rectangle Structure - MSDN
RectangleConverter class - MSDN
Size Structure - MSDN
SizeConverter class - MSDN
Region class - MSDN

#### Text handling and regular expressions

Exam objective: Enhance the text handling capabilities of a .NET Framework application, and search, modify, and control text in a .NET Framework application by using regular expressions
(Refer System.Text namespace)
(Refer System.RegularExpressions namespace)

##### String class

The String class is not a specific exam objective but was added to have a place to discuss some of its characteristics.
String class - MSDN

##### StringBuilder class

The StringBuilder class is used for very fast string concatenation. If you use conventional string concatenation then it will run very slow because a string is held in an array. Each concatenation causes the array to increase its size and the memory has to be copied to a new location internally. This is very slow.
For fast string concatenations use StringBuilder instead. It is about 1000 times faster (depending on the string you concatenate).
StringBuilder class - MSDN
Refer to the example to measure the performance differences.
StringBuilder example

##### Regex class

Regex class - MSDN

##### Match class and MatchCollection class

Match class - MSDN
MatchCollection class - MSDN

##### Group class and GroupCollection class

Group class - MSDN
GroupCollection class - MSDN

##### Encode text by using Encoding classes

Encoding class - MSDN
EncodingInfo class - MSDN
ASCIIEncoding class - MSDN
UnicodeEncoding class - MSDN
UTF8Encoding class - MSDN
Encoding Fallback classes - MSDN

##### Decode text by using Decoding classes.

Decoder class - MSDN
Decoder Fallback classes - MSDN

##### Capture class and CaptureCollection class

Capture class - MSDN
CaptureCollection class - MSDN
Previous