本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

TextElementEnumerator 类

 

枚举字符串的文本元素。

命名空间:   System.Globalization
程序集:  mscorlib(位于 mscorlib.dll)

System.Object
  System.Globalization.TextElementEnumerator

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class TextElementEnumerator : IEnumerator

名称说明
System_CAPS_pubpropertyCurrent

获取字符串中的当前文本元素。

System_CAPS_pubpropertyElementIndex

获取枚举数当前置于其上的文本元素的索引。

名称说明
System_CAPS_pubmethodEquals(Object)

确定指定的对象是否等于当前对象。(继承自 Object。)

System_CAPS_protmethodFinalize()

在垃圾回收将某一对象回收前允许该对象尝试释放资源并执行其他清理操作。(继承自 Object。)

System_CAPS_pubmethodGetHashCode()

作为默认哈希函数。(继承自 Object。)

System_CAPS_pubmethodGetTextElement()

获取字符串中的当前文本元素。

System_CAPS_pubmethodGetType()

获取当前实例的 Type(继承自 Object。)

System_CAPS_protmethodMemberwiseClone()

创建当前 Object 的浅表副本。(继承自 Object。)

System_CAPS_pubmethodMoveNext()

将枚举数前移到字符串的下一个文本元素。

System_CAPS_pubmethodReset()

将枚举数设置为其初始位置,该位置位于字符串中第一个文本元素之前。

System_CAPS_pubmethodToString()

返回表示当前对象的字符串。(继承自 Object。)

.NET Framework 作为一个单元显示为单个字符,即字形的文本定义的文本元素。 文本元素可以是以下任一情况︰

  • 表示为单个的基字符 Char 值。 例如,拉丁文大写字母字母 (U + 0041) 和拉丁文小写字母 AE (U + 00E6) 都是基本的字符。

  • 组合字符序列,其中包含基字符和一个或多个组合字符。 例如,示例中,拉丁文大写字母 (U + 0041) 后跟组合长音符 (U + 0304) 是组合字符序列。

  • 代理项对,其中 Unicode Standard 将定义两个代码单元的一列组成的单一抽象字符编码的字符表示形式︰ 一个高代理项和一个低代理项。 代理项对用于表示为 utf-8 编码字符之外的 Unicode 基本多文种平面字符。 例如,utf-8 编码为其值是介于 0xD800 一个高代理项以及其值是 0xDF43 的低代理项中表示哥特文字母 SAUIL (U + 10343)。 代理项对可以表示基字符或组合字符。

TextElementEnumerator 类使您能够使用一个字符串中的文本元素而不是单 Char 对象。

您实例化 TextElementEnumerator 对象,表示特定字符串的字符串传递给 StringInfo.GetTextElementEnumerator 方法。 这将返回的枚举数定位在字符串中的第一个文本元素之前。 调用 Reset 方法还会枚举器放回此位置。 因为这表示无效状态,则必须调用 MoveNext 将枚举数前移到字符串的第一个文本元素,在读取的值之前 Current 属性以返回当前文本元素。

在处理时 TextElementEnumerator 对象时,您应负责定位枚举器。 Current 属性会返回相同的文本元素,直至您调用 MoveNextReset 如果它位于第一个文本元素之前或之后在字符串中的最后一个文本元素,枚举数将处于无效状态。 当枚举器处于无效状态,因此时,尝试检索的值 Current 属性引发异常。 您可以枚举器是否处于无效状态进行测试,以确定是否的返回值 MoveNext 属性是 false

TextElementEnumerator 对象表示的当前状态的字符串变量或字符串文字时刻的快照, TextElementEnumerator 实例化对象。 请注意:

  • 文本元素的枚举器只能用于读取字符串中的数据。 它们不能修改基础字符串。

  • 一个枚举数没有对它所代表的字符串独占访问权。 创建枚举器后,可以修改一个字符串变量。

  • 一个 TextElementEnumerator 对象枚举在时间出现在字符串的文本元素的 TextElementEnumerator 已实例化对象。 如果以后修改该变量,它不反映给字符串变量的任何后续更改。

  • 因为 TextElementEnumerator 类不会覆盖 Object.Equals, ,两个 TextElementEnumerator 代表相同的字符串的对象将被视为不相等。

下面的示例使用 TextElementEnumerator 类来枚举字符串的文本元素。

using System;
using System.Globalization;


public class SamplesTextElementEnumerator  {

   public static void Main()  {

      // Creates and initializes a String containing the following:
      //   - a surrogate pair (high surrogate U+D800 and low surrogate U+DC00)
      //   - a combining character sequence (the Latin small letter "a" followed by the combining grave accent)
      //   - a base character (the ligature "")
      String myString = "\uD800\uDC00\u0061\u0300\u00C6";

      // Creates and initializes a TextElementEnumerator for myString.
      TextElementEnumerator myTEE = StringInfo.GetTextElementEnumerator( myString );

      // Displays the values returned by ElementIndex, Current and GetTextElement.
      // Current and GetTextElement return a string containing the entire text element. 
      Console.WriteLine( "Index\tCurrent\tGetTextElement" );
      myTEE.Reset();
      while (myTEE.MoveNext())  {
         Console.WriteLine( "[{0}]:\t{1}\t{2}", myTEE.ElementIndex, myTEE.Current, myTEE.GetTextElement() );
      }

   }

}

/*
This code produces the following output.  The question marks take the place of high and low surrogates.

Index   Current GetTextElement
[0]:    ??      ??
[2]:    a`      a`
[4]:    Æ       Æ

*/

通用 Windows 平台
自 8 起可用
.NET Framework
自 1.1 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用

此类型的所有公共静态(Visual Basic 中的 已共享 在 Visual Basic 中)成员都是线程安全的。不保证所有实例成员都是线程安全的。

返回页首
显示: