Sorry for too advanced answer to a very simple question, but, for completeness, it's important to mention. Please see my past answer to a different question:
how to retrieve the unicode representation for a char?[
^].
Among other things, I explain that, unfortunately,
String.Length
does not really return the number of characters. Surprise? It used to be surprise for me, too. In fact, it returns the number of 16-bit code words. Each such word represent a single character only for a character withing BMP (code point 0xffff or less). See also:
https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane[
^].
If your string has characters above MBP, each such character is represented by a
surrogate pair. I don't want to repeat all that; please read my past answer for detailed information and links. This solution should also explain how to find the "real" number of characters. It also explains what a code point and a character really is.
—SA