<p>Say you've loaded a text file into a string, and you'd like to convert all Unicode escapes into actual Unicode characters inside of the string. </p>

<p>Example:</p>

<blockquote>
  <p>"The following is the top half of an integral character in Unicode '\u2320', and this is the lower half '\U2321'."</p>
</blockquote>

The answer is simple and works well with strings up to at least several thousand characters.
Example 1:
```
```
Regex  rx = new Regex( @"\\[uU]([0-9A-F]{4})" );
result = rx.Replace( result, match => ((char) Int32.Parse(match.Value.Substring(2), NumberStyles.HexNumber)).ToString() );
```
```
Example 2:
```
```
Regex  rx = new Regex( @"\\[uU]([0-9A-F]{4})" );
result = rx.Replace( result, delegate (Match match) { return ((char) Int32.Parse(match.Value.Substring(2), NumberStyles.HexNumber)).ToString(); } );
```
```
The first example shows the replacement being made using a lambda expression (C# 3.0) and the second uses a delegate which should work with C# 2.0.
To break down what's going on here, first we create a regular expression:
```
```
new Regex( @"\\[uU]([0-9A-F]{4})" );
```
```
Then we call Replace() with the string 'result' and an anonymous method (lambda expression in the first example and the delegate in the second - the delegate could also be a regular method) that converts each regular expression that is found in the string.
The Unicode escape is processed like this:
```
```
((char) Int32.Parse(match.Value.Substring(2), NumberStyles.HexNumber)).ToString(); });
```
```
Get the string representing the number part of the escape (skip the first two characters).
```
```
match.Value.Substring(2)
```
```
Parse that string using Int32.Parse() which takes the string and the number format that the Parse() function should expect which in this case is a hex number.
```
```
NumberStyles.HexNumber
```
```
Then we cast the resulting number to a Unicode character:
```
```
(char)
```
```
And finally we call ToString() on the Unicode character which gives us its string representation which is the value passed back to Replace():
```
```
.ToString()
```
```
Note: Instead of grabbing the text to be converted with a Substring call you could use the match parameter's GroupCollection, and a subexpressions in the regular expression to capture just the number ('2320'), but that's more complicated and less readable.