虽然字符串比较对于排序或测试相等性很有用,但有时只是想检查一下字符串中的字符。String 类型为此提供了几个属性和方法,包括 Length,Chars(一个C#索引器),GetEnumerator,ToCharArray,Contains,IndexOf,LastIndexOf,IndexOfAny和LastIndexOfAny。
System.Char 实际代表一个16位 Unicode 码值,而且该值不一定就等于一个抽象 Unicode 字符。例如,有的抽象 Unicode 字符是两个码值的组合。
除此之外,有的 Unicode 文本元素要求用两个16位值表示。第一个称为“高位代理项”(high surrogate),第二个称为“低位代理项”(low surrogate)。
为了正确处理文本元素,应当使用 System.Globalization.StringInfo 类型。使用这个类型最简单的方式就是构造它的实例,向构造器传递一个字符串。然后可以查询 StringInfo 的 LengthInTextElements 属性来了解字符串中有多少文本字符。