Поделиться через


TextElementEnumerator Класс

Определение

Перечисляет текстовые элементы строки.

public ref class TextElementEnumerator : System::Collections::IEnumerator
public class TextElementEnumerator : System.Collections.IEnumerator
[System.Serializable]
public class TextElementEnumerator : System.Collections.IEnumerator
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class TextElementEnumerator : System.Collections.IEnumerator
type TextElementEnumerator = class
    interface IEnumerator
[<System.Serializable>]
type TextElementEnumerator = class
    interface IEnumerator
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TextElementEnumerator = class
    interface IEnumerator
Public Class TextElementEnumerator
Implements IEnumerator
Наследование
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]:    à       à
[4]:    Æ       Æ

*/
Imports System.Globalization

Public Class SamplesTextElementEnumerator

   Public Shared Sub 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 "")
      Dim myString As String = ChrW(&HD800) & ChrW(&HDC00) & ChrW(&H0061) & ChrW(&H0300) & ChrW(&H00C6)

      ' Creates and initializes a TextElementEnumerator for myString.
      Dim myTEE As TextElementEnumerator = 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" + ControlChars.Tab + "Current" + ControlChars.Tab + "GetTextElement")
      myTEE.Reset()
      While myTEE.MoveNext()
         Console.WriteLine("[{0}]:" + ControlChars.Tab + "{1}" + ControlChars.Tab + "{2}", myTEE.ElementIndex, myTEE.Current, myTEE.GetTextElement())
      End While

   End Sub

End Class

'This code produces the following output.  The question marks take the place of high and low surrogates.
'
'Index   Current GetTextElement
'[0]:    𐀀       𐀀
'[2]:    à       à
'[4]:    Æ       Æ

Комментарии

Платформа .NET Framework определяет текстовый элемент в виде единицы текста, отображаемого как один символ, то есть графем. Текстовый элемент может быть любым из следующих элементов:

  • Базовый символ, представляющийся как одно Char значение. Например, LATIN CAPITAL LETTER A (U+0041) и LATIN SMALL LETTER AE (U+00E6) являются базовыми символами.

  • Объединение последовательности символов, которая состоит из базового символа и одного или нескольких объединенных символов. Например, ЛАТИНСКАЯ БУКВА БУКВА A (U+0041), а затем ОБЪЕДИНЕНИЕ МАКРОНА (U+0304) — это объединение последовательности символов.

  • Суррогатные пары, которые Стандарт Юникода определяет как закодированное представление символа для одного абстрактного символа, состоящего из последовательности двух единиц кода: высокого суррогата и низкого суррогата. Суррогатные пары используются для представления символов за пределами базовой многоязычной плоскости Юникода в кодировке UTF-16. Например, ГОТИЧЕСКАЯ БУКВА SAUIL (U+10343) представлена в кодировке UTF-16 как высокий суррогат, значение которого 0xD800 и низкое суррогатное значение, значение которого 0xDF43. Суррогатная пара может представлять базовый символ или объединенный символ.

Класс TextElementEnumerator позволяет работать с текстовыми элементами в строке, а не с одними Char объектами.

Создайте TextElementEnumerator экземпляр объекта, представляющего определенную строку, передав строку методу StringInfo.GetTextElementEnumerator . Возвращает перечислитель, расположенный перед первым текстовым элементом в строке. Reset Вызов метода также возвращает перечислитель к этой позиции. Так как это представляет недопустимое состояние, необходимо вызвать MoveNext перечислитель к первому текстовому элементу строки перед чтением значения Current свойства, чтобы вернуть текущий текстовый элемент.

При работе с TextElementEnumerator объектом вы несете ответственность за размещение перечислителя. Свойство Current возвращает тот же текстовый элемент, пока не вызовете либо MoveNextReset. Перечислитель находится в недопустимом состоянии, если он расположен до первого текстового элемента или после последнего текстового элемента в строке. Если перечислитель находится в недопустимом состоянии, попытка получить значение Current свойства вызывает исключение. Вы можете определить, находится ли перечислитель в недопустимом состоянии, проверив, является falseли возвращаемое значение MoveNext() свойства.

Объект TextElementEnumerator представляет моментальный снимок текущего состояния строковой переменной или строкового литерала в момент TextElementEnumerator создания объекта. Обратите внимание, что:

  • Перечислители текстовых элементов можно использовать только для чтения данных в строке. Они не могут изменить базовую строку.

  • Перечислитель не имеет монопольного доступа к строке, представляющей ее. Строковая переменная может быть изменена после создания перечислителя.

  • Объект TextElementEnumerator перечисляет текстовые элементы, присутствующих в строке во время создания экземпляра TextElementEnumerator объекта. Он не отражает последующие изменения строковой переменной, если эта переменная будет изменена после этого.

  • TextElementEnumerator Так как класс не переопределяетObject.Equals, два TextElementEnumerator объекта, представляющих одну и ту же строку, будут считаться неравными.

Свойства

Имя Описание
Current

Возвращает текущий текстовый элемент в строке.

ElementIndex

Возвращает индекс текстового элемента, над которым в настоящее время размещается перечислитель.

Методы

Имя Описание
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetTextElement()

Возвращает текущий текстовый элемент в строке.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MoveNext()

Перемещает перечислитель к следующему текстовому элементу строки.

Reset()

Задает перечислителю начальную позицию, которая перед первым текстовым элементом в строке.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел